为了账号安全,请及时绑定邮箱和手机立即绑定

关于 jQuery 的 attr 方法

关于 jQuery 的 attr 方法

qq_遁去的一_1 2018-12-07 04:07:31
今天在使用 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 版本的。   不知道大家有没有遇到这样的问题
查看完整描述

7 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

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

查看完整回答
反对 回复 2018-12-24
?
MYYA

TA贡献1868条经验 获得超4个赞

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

查看完整回答
反对 回复 2018-12-24
?
手掌心

TA贡献1942条经验 获得超3个赞

$newNode.attr('_udata') 方法取出来的数据是个 '[object Object]' 的字符串。 按 jQuery 的 API 参考, attr 设置属性的时候,值是一个 Object, 而取值的时候,返回的也是一个 Object
查看完整回答
反对 回复 2018-12-24
?
精慕HU

TA贡献1845条经验 获得超8个赞

@匡匡:司徒正美做了说明,其实我也说了,attr只能是作为字符串的形式添加属性的。
查看完整回答
反对 回复 2018-12-24
?
PIPIONE

TA贡献1829条经验 获得超9个赞

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

查看完整回答
反对 回复 2018-12-24
?
慕少森

TA贡献2019条经验 获得超9个赞

有些地方又可以,有些地方又不行,很奇怪,我在找找原因
查看完整回答
反对 回复 2018-12-24
  • 7 回答
  • 0 关注
  • 605 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信