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