我正在尝试运行两组不同的函数,这些函数基于单击另一个元素时元素是否可见。这是整个功能:
$('#grid').click(function() {
if('#photo_grid:hidden') {
$('#grid').addClass('active').removeClass('fadein');
$('.cycle-slideshow').fadeTo('fast',0.3);
$('#photo_grid').fadeIn('slow');
} else {
$('#grid').addClass('fadein').removeClass('active');
$('#photo_grid').fadeOut('fast');
$('.cycle-slideshow').fadeTo('slow',1.0);
}
});
根据需要,这会导致在#grid
和.cycle-slideshow
中添加/删除的类在第一次点击时淡化为30%。但是,#photo_grid
不会淡入,因此后续点击失败。任何人都可以建议为什么会这样吗?
网页是实时here,#grid
按钮是最右边的按钮。
答案 0 :(得分:2)
if
的问题在于您是否有效地测试字符串的存在,而您尝试要做的是响应元素的可见性。因此,我建议:
if ($('#photo_grid:hidden').length)
或者:
if ($('#photo_grid').is(':hidden'))
.length
检查确保选择器返回一个或多个项目(因为jQuery 总是返回一个数组(即使它是空 array),而is()
方法返回一个布尔值,以反映传递给方法的选择器匹配或不匹配的元素。
参考文献:
is()
。