有没有人能在W3C DOM4规范第5.2.2节上解释这张便条
相关引文:
注意:
getElementById()方法并不是为了与旧版本的jQuery兼容而使用的元素。如果某个时候那个版本的jQuery消失了,我们可能会支持它。
我很好奇这个接口如何显式地导致jQuery的问题,以及什么版本,有人有例子吗?
发布于 2015-07-20 23:27:14
要扩展到@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>
发布于 2015-07-20 23:03:47
看起来,getElementById方法只存在于document全局对象上,而且它还不是DOM4 Element对象的一部分。
这是由于与较早版本的jQuery的兼容性问题,因为您可以在DOM4规范上阅读。
但是,这一切意味着什么呢?这意味着W3C试图将此方法添加到Element对象中,还意味着一旦这个“jQuery版本”拒绝,我们“可能”就能够像这样链接getElementById()调用:
var myElement = document.getElementById("header").getElementById("slogan");没有什么特别的,他们不希望最流行的DOM操作包装器崩溃或jQuery,因为W3C成员对这个决定有一定的影响。
https://stackoverflow.com/questions/31525935
复制相似问题