我有一个关于jQuery选择器的快速问题。
这样做:
$('.class_el_1, .class_el_2').hide();
与使用jQuery的.each函数循环遍历每个元素一样?
答案 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
循环来识别它们。