在下面的jQuery中,
$('.filter').click(function() {
if ($('.this-div').hasClass('on-display')) {
$(this).show;
} else {
$('.this-div').hide();
}
然后第3行的'this'是指第一个.filter,还是.this-div?
如果它没有引用.this-div,我怎么能把第2-6行基本上读成:
如果带有.this-div类的页面上的一个div也有一个.on-display类,那么显示div(和其他匹配的)。否则,隐藏它。
答案 0 :(得分:0)
使用javascript的常规范围规则,它只是您拥有事件监听器的过滤器元素。
答案 1 :(得分:0)
this
指的是包含' .filter'的jQuery对象。因为this
不受if语句的影响(它受函数上下文的影响)。
为了让代码按照您的意愿行事,我会使用jQuery' s .each()
$('.filter').click(function() {
$('.this-div').each(function(index){
if ($(this).hasClass('on-display')) {
$(this).show();
} else {
$(this).hide();
}
});
});
答案 2 :(得分:0)
在您的示例中,this
引用.filter
类,因为将click
事件分配给它传递匿名函数。
使用Jquery必须包含包含.this-div
var $divs = $( "div:has('.this-div')" );
here约有has
个功能。
然后过滤包含.on-display
的元素:
var $res = $divs.filter("div:has('.on-display')");