是否有人可以在section 5.2.2 of the W3C DOM4 specification上解释说明?
相关报价:
注意:
getElementById()
方法不适用于与旧版jQuery兼容的元素。如果时间到了那个版本的jQuery消失了,我们也许能够支持它。
我很好奇这个界面如何明确地导致jQuery
出现问题以及有哪些版本,有没有人有例子?
答案 0 :(得分:2)
要扩展@Nan答案,它可能与使用getElementById
的jQuery验证迭代中的步骤有关。将此方法添加到HTMLElement
会使某些条件在jQuery代码的一部分依赖于它未验证时验证。
很难确切地说出哪个版本会导致问题,而且确切地说在哪些情况下,但是对旧的jQuery版本进行快速查看,您会发现旧版本中的find()
与具有{{1}的元素不兼容方法。
回到1.3版,你可以尝试将方法添加到HTMLElement,你会发现它混淆了结果。更新版本正确处理此问题。请参阅代码段:
getElementById
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);
答案 1 :(得分:1)
getElementById
方法看起来只出现在document
全局对象上,而且它不是DOM4 Element
对象的一部分。
这是由于与旧版jQuery的兼容性问题,因为您可以阅读DOM4规范。
但是,这一切意味着什么?这意味着W3C试图将此方法添加到Element
对象中,这也意味着一旦这个“jQuery版本”消失,我们“可能”能够链接getElementById()
这样的调用:
var myElement = document.getElementById("header").getElementById("slogan");
没什么特别的,他们不希望最流行的DOM操作包装器崩溃或jQuery,因为member of the W3C对这个决定产生了一些影响