jQuery选择器问题

时间:2010-10-01 13:27:56

标签: jquery jquery-selectors

我有一个关于jQuery选择器的快速问题。

这样做:

$('.class_el_1, .class_el_2').hide();

与使用jQuery的.each函数循环遍历每个元素一样?

1 个答案:

答案 0 :(得分:4)

它具有相同的效果隐藏它们全部,但它在内部并不完全相同,没有。 .each()需要一个回调,其中this可用于对每个元素执行特定操作,因此它可以完成更多工作。链中的.hide()只在元素上设置display: none;(存储它们之前的值)。

You can see how it works internally here,适用于没有参数的通话:

for ( var i = 0, l = this.length; i < l; i++ ) {
  var old = jQuery.data(this[i], "olddisplay");
  if ( !old && old !== "none" ) {
    jQuery.data( this[i], "olddisplay", jQuery.css( this[i], "display" ) );
  }
}

// Set the display of the elements in a second loop
// to avoid the constant reflow
for ( var j = 0, k = this.length; j < k; j++ ) {
  this[j].style.display = "none";
}

在上面this指的是$('.class_el_1, .class_el_2')匹配的元素集,只需使用for循环来识别它们。