有没有人可以解释关于section 5.2.2 of the W3C DOM4 specification的注释?W3C DOM4规范第5.2.2节中的jQuery注释
相关报价:
注:的
getElementById()
方法不是对与旧版本的jQuery兼容的元素。如果该版本的jQuery已经消失,那么我们可能会支持它。
我很好奇这个接口如何明确地导致jQuery
和什么版本的问题,有没有人有一个例子?
有没有人可以解释关于section 5.2.2 of the W3C DOM4 specification的注释?W3C DOM4规范第5.2.2节中的jQuery注释
相关报价:
注:的
getElementById()
方法不是对与旧版本的jQuery兼容的元素。如果该版本的jQuery已经消失,那么我们可能会支持它。
我很好奇这个接口如何明确地导致jQuery
和什么版本的问题,有没有人有一个例子?
要扩展@Nan答案,它可能与jQuery使用getElementById
来验证步骤中的一个步骤迭代。将这种方法添加到HTMLElement
会使一些条件有效,当jQuery代码的一部分取决于它不验证。
很难说究竟哪个版本导致问题出现,并且在哪些情况下,但是快速查看旧的jQuery版本,可以看到旧版本中的find()
与具有getElementById
方法的元素不兼容。
回到1.3版,您可以尝试将方法添加到HTMLElement,您会发现它会混淆结果。更新的版本正确处理这个问题。见段:
alert('Without getElementById method on HTMLElement, length of $("div").find("#test") is ' + $('div').find('#test').length);
window.HTMLElement.prototype.getElementById = function(str){
console.log(str);
return str;
}
alert('With getElementById method on HTMLElement, length of $("div").find("#test") is ' + $('div').find('#test').length);
<script src="https://code.jquery.com/jquery-1.3.js"></script>
<div id="container"><div id="test"></div></div>
它看起来像getElementById
方法只出现在document
全局对象,并且它不是DOM4 Element
对象但的一部分。
这是由于您可以在DOM4规范中读取的旧版jQuery的兼容性问题。
但是,这一切意味着什么?这意味着W3C尝试这种方法添加到Element
对象,同时也意味着,一旦这个disapear“jQuery的版本”,我们“可能”能够链getElementById()
调用是这样的:
var myElement = document.getElementById("header").getElementById("slogan");
没什么特别的,他们没不想要最流行的DOM处理包装崩溃或jQuery作为member of the W3C已对这一决定产生一定影响