今天在使用 attr 为一个对象设置一个属性时出现这样一个问题:
var obj = {name:'', sex:''};
var $newNode = $('<span>contents....</span').attr('_udata', obj);
$(document.body).append($newNode);
上面的代码使用了 attr 方法为对象设置了一个属性,这个属性的值是一个 Object,但是在使用 attr 方法来获取这个属性值的时候,获取的值却变成了字符串:
var obj = $newNode.attr('_udata');
alert(typeof obj); // alert string.
真是很奇怪了,我使用是的 v1.3.2 版本的。
不知道大家有没有遇到这样的问题
用1.4.2这个版本吧,提供一个新的方法,$.fn.data(name[,val])
这个应该不奇怪吧!这里你使用attr进行属性添加的时候她是作为字符串的形式添加到该属性上的,取出来也一样。想要转换回原来的object对象你可以使用eval来处理。比如 var obj=eval($newNode.attr('_udata'));
对不起,DOM元素的属性只能是字符串!你赋什么进去也好,里面都会强制调用它的toString方法。DOM元素是不同于javascript对象的。如果你一定要给_udata绑定一个对象,那就用data方法吧。
你用错方法了,应该用数据缓存那里的data方法;attr是给html元素设置属性的,不是在jquery对象上缓存数据。