为什么jQuery库会暴露DOM元素?

时间:2013-05-02 17:43:13

标签: jquery api-design

这是关于jQuery API的设计的问题,而不是使用细节。

为什么jQuery对象是DOM元素的集合而不是jQuery对象的集合?

仅使用jQuery对象将允许在整个代码中以相同的方式完成所有DOM操作。似乎大多数使用模式立即将DOM元素转换为jQuery对象。据我了解,期望进行许多DOM-element-to-jQuery-object转换,这就是他们选择速记$函数的原因。

为什么这样?为什么不假设我们想通过jQuery操纵DOM并避免在任何地方进行显式转换?

2 个答案:

答案 0 :(得分:3)

在不需要jquery对象时创建jquery对象是低效的。例如:

$("a").each(function(){
    console.log(this.href);
});

由于href始终作为DOMElement的属性提供,因此将其转换为jQuery对象并使用.attr将是一种浪费。

为了让jQuery使每一个成为一个jQuery对象,它必须为它迭代的每个元素创建一个新的jQuery对象,如果你不需要它成为一个jQuery对象,这是一种浪费。相同的思维过程可以应用于事件处理程序,过滤器方法以及迭代元素的任何其他方法。

答案 1 :(得分:-1)

jQuery对象允许您在任何Dom元素上使用各种有用的jQuery函数,这要归功于Dom遍历函数。 无论您正在操作什么相关的jQuery对象,您仍然可以获得原始的Dom元素。