1

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

$('#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并淡化到 30%。但是,不会淡入,因此后续的点击会失败。谁能建议这可能是为什么?.cycle-slideshow#photo_grid

Page is live here#grid按钮位于最右下方。

4

1 回答 1

2

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

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

或者:

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

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

参考:

于 2012-11-23T19:04:43.213 回答