如果可见,JQuery不能与父子一起使用吗?

时间:2010-09-06 15:18:04

标签: jquery

我有一个父DIV(.box)和一个孩子(#display)。如果孩子被隐藏,我想淡出父母。但它仍然有效:S

if( $('#display').is(':visible') ) {
     $(this).parent(".box").fadeTo(100,1);
} else {
     $(this).parent(".box").fadeTo(100,0.7);
}

3 个答案:

答案 0 :(得分:0)

很难准确说出要给出的建议,因为我不知道是什么触发了这段代码。

我假设这不在事件处理程序中。

var $display = $('#display');  // cache #display for better performance

if( $display.is(':visible') ) {
     $display.parent(".box").fadeTo(100,1);
} else {
     $display.parent(".box").fadeTo(100,0.7);
}

this的值将引用在其事件处理程序中接收事件的元素。对于if()语句,这不起作用。

答案 1 :(得分:0)

您很可能没有正确使用$(this)。尝试将代码更改为:

if( $('#display').is(':visible') ) {
     $('#display').parent(".box").fadeTo(100,1);
} else {
     $('#display').parent(".box").fadeTo(100,0.7);
}

您可以详细了解this关键字in ppk's site

答案 2 :(得分:0)

Reinis'代码应该可以工作,如果没有尝试这个:

if( $('#display')[0].is(':visible') ) {
     $('#display')[0].parent().fadeTo(100,1);
} else {
     $('#display')[0].parent().fadeTo(100,0.7);
}

另外,请确保您正在触发此代码。尝试在那里放一些警报。