基于元素可见性的功能不起作用?

时间:2012-11-23 18:45:19

标签: jquery css if-statement

我正在尝试运行两组不同的函数,这些函数基于单击另一个元素时元素是否可见。这是整个功能:

$('#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按钮是最右边的按钮。

1 个答案:

答案 0 :(得分:2)

if的问题在于您是否有效地测试字符串的存在,而您尝试要做的是响应元素的可见性。因此,我建议:

if ($('#photo_grid:hidden').length)

或者:

if ($('#photo_grid').is(':hidden'))

.length检查确保选择器返回一个或多个项目(因为jQuery 总是返回一个数组(即使它是 array),而is()方法返回一个布尔值,以反映传递给方法的选择器匹配或不匹配的元素。

参考文献: