使用jQuery可以执行以下操作:$("div")[5].animate()
在我看来,开发人员在某种程度上使用HTMLElement
扩展了prototype
。
我现在的问题是:他们是怎么做到的?由于HTMLElement.prototype
在IE中不起作用,我想知道是否有一种跨浏览器方法来构建HTML元素的原型。
谢谢!
答案 0 :(得分:2)
你不能在IE中扩展这些东西; IE只是没有以这种方式实现DOM接口。这就是为什么Prototype强制你用这些附加方法“包装”你想要操纵的元素。
答案 1 :(得分:2)
jQuery工厂函数(jQuery()
或$()
) 不会返回DOM节点 。
jQuery工厂函数返回一个新的jQuery.init
实例,其行为与数组非常相似。而不是扩展任何DOM节点的原型,只需将更多功能添加到jQuery.fn
如果函数链接在jQuery选择器上,它通常适用于 all jQuery.init实例中包含的元素。
我强烈建议您阅读commented jQuery source,以便能够准确了解幕后发生的事情。
答案 2 :(得分:1)
请注意$('#book') !== document.getElementById('book')
。
第一个是jQuery对象,它引用一个dom元素并且可以扩展,而第二个实际上是一个dom元素。