猿问

关于 jQuery 的 attr 方法

今天在使用 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 版本的。

 

不知道大家有没有遇到这样的问题

qq_遁去的一_1
浏览 606回答 7
7回答

慕码人2483693

用1.4.2这个版本吧,提供一个新的方法,$.fn.data(name[,val])

MYYA

这个应该不奇怪吧!这里你使用attr进行属性添加的时候她是作为字符串的形式添加到该属性上的,取出来也一样。想要转换回原来的object对象你可以使用eval来处理。比如 var obj=eval($newNode.attr('_udata'));

手掌心

$newNode.attr('_udata') 方法取出来的数据是个 '[object Object]' 的字符串。 按 jQuery 的 API 参考, attr 设置属性的时候,值是一个 Object, 而取值的时候,返回的也是一个 Object

精慕HU

@匡匡:司徒正美做了说明,其实我也说了,attr只能是作为字符串的形式添加属性的。

PIPIONE

你用错方法了,应该用数据缓存那里的data方法;attr是给html元素设置属性的,不是在jquery对象上缓存数据。

慕少森

有些地方又可以,有些地方又不行,很奇怪,我在找找原因
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答