版本1.6中的jquery attr行为

时间:2011-05-09 07:32:54

标签: jquery attributes prop

我创建了一个页面ere

版本1.5正常运行

现在1.6我在firebug中收到此错误

 elem.getAttribute is not a function
 [Break On This Error] ret = elem.getAttribute( name ); 

和铬几乎相同

 Uncaught TypeError: Object #<HTMLDocument> has no method 'getAttribute'

如何纠正? 我是否必须像jquery 1.6 api一样将所有内容更改为prop http://api.jquery.com/prop/

1 个答案:

答案 0 :(得分:0)

我认为问题出在你的图书馆jquery.getUrlParam.js。这有以下几行:

if ($(this).attr("nodeName")=="#document") {

这在jQuery&lt; = 1.5下工作,因为attr使用了属性和属性。 jQuery 1.6已经清除了这种混乱,这为依赖于这种行为的代码带来了一些问题。这是由于更改而破坏的代码示例。

更正将是

if (this.nodeName === "#document") {

您应该能够在代码中修复此问题;将它报告给插件作者可能也是明智之举。

另一点是,jQuery在attr对象上尝试document时可能会提供更好的错误消息,因为document节点(与元素节点不同)没有getAttribute方法。这是您的神秘错误消息的原因。


编辑5月11日此处的错误看起来像是在jQuery 1.6.1中修复。 This commit到jQuery源意味着如果所选节点没有prop方法,jQuery会回退到getAttribute方法。

这与the other changes in 1.6.1一起应该从&lt; 1.6无缝升级到1.6.1。