这是一个关于jQuery API设计的问题,而不是使用细节。
为什么 jQuery 对象是 DOM 元素的集合而不是 jQuery 对象的集合?
仅使用 jQuery 对象将允许在整个代码中以相同的方式完成所有 DOM 操作。似乎大多数使用模式都会立即将 DOM 元素转换为 jQuery 对象。据我了解,预计会有许多 DOM 元素到 jQuery 对象的转换,这就是他们选择速记$
函数的原因。
为什么要这样做?为什么不假设我们想通过 jQuery 操作 DOM 并避免到处显式转换呢?
这是一个关于jQuery API设计的问题,而不是使用细节。
为什么 jQuery 对象是 DOM 元素的集合而不是 jQuery 对象的集合?
仅使用 jQuery 对象将允许在整个代码中以相同的方式完成所有 DOM 操作。似乎大多数使用模式都会立即将 DOM 元素转换为 jQuery 对象。据我了解,预计会有许多 DOM 元素到 jQuery 对象的转换,这就是他们选择速记$
函数的原因。
为什么要这样做?为什么不假设我们想通过 jQuery 操作 DOM 并避免到处显式转换呢?
当不需要一个 jquery 对象时,创建一个 jquery 对象将是低效的。例如:
$("a").each(function(){
console.log(this.href);
});
由于 href 始终作为 DOMElement 的属性可用,因此将其转换为 jQuery 对象并使用.attr
.
为了让 jQuery 使每个元素都成为 jQuery 对象,它必须为它迭代的每个元素创建一个新的 jQuery 对象,如果您不需要它成为 jQuery 对象,这是一种浪费。相同的思考过程可以应用于事件处理程序、过滤器方法和任何其他迭代元素的方法。
借助 Dom 遍历函数,jQuery 对象允许您在可以访问的任何 Dom 元素上使用各种有用的 jQuery 函数。无论您操作的是什么相关的 jQuery 对象,您仍然可以获得原始的 Dom 元素。