1

使用 jQuery 可以做这样的事情:$("div")[5].animate()

在我看来,这就像开发人员在某种程度上扩展了HTMLElementusing prototype.

我现在的问题是:他们是怎么做到的?例如,由于HTMLElement.prototype在 IE 中不起作用,我想知道是否有跨浏览器方法来制作 HTML 元素的原型。

谢谢!

4

3 回答 3

2

你不能在 IE 中扩展这些东西;IE 只是不以这种方式实现 DOM 接口。这就是为什么 Prototype 强制您“包装”您想要使用这些附加方法操作的元素。

于 2011-10-11T13:18:19.950 回答
2

jQuery 工厂函数(jQuery()$()不返回 DOM 节点

jQuery 工厂函数返回一个jQuery.init与数组非常相似的新实例。不是扩展任何 DOM 节点的原型,而是简单地添加更多功能jQuery.fn

如果函数链接在 jQuery 选择器上,它通常适用于 jQuery.init 实例中包含的所有元素。

我强烈建议您阅读注释过的 jQuery 源代码,以便您可以准确地看到幕后发生的事情。

于 2011-10-11T13:22:51.060 回答
1

请注意$('#book') !== document.getElementById('book').
第一个是 jQuery 对象,它引用一个 dom 元素并且可以扩展,而第二个实际上是一个 dom 元素。

于 2011-10-11T13:27:37.330 回答