javascript - 使用 JQuery .not( ) 淡出除所选内容及其子元素之外的所有 div

标签 javascript jquery fadeout children

我目前有一个图像网格,每个图像都有一个悬停功能,可以更改 div 的不透明度。所以图像是背景图像,信息是 grid-item 内的 div。

  <div class="grid">
    <div class="grid-item">
      <div class="image-rollover">
        <div class="title">
          Image title text
        </div>
      </div>
      <div class="info">
        Image information text
      </div>
    </div>
  </div>

我有一个函数,可以使每个网格项除了被单击的项之外消失:

$(".grid-item").click(function() {
  var selected = this;
  $(selected).children(".image-rollover").css("opacity", "1");
  $(function() {
    $('.grid div').not(selected).fadeOut(200);
  });
});

我希望除单击的图像之外的所有图像都消失,并且我希望保留该单击的图像的翻转状态。我已经得到了前半部分,但是尽管我将 CSS 设置为 1,悬停状态还是消失了。

我认为这与 .not() 有关,而且 .not() 似乎不包含该 div 内的所有子元素?

任何人都可以建议选择除所选元素及其所有子元素之外的所有 div 吗?

最佳答案

.grid div 匹配所有 div,包括grid-item内部的内容。

如果您仅匹配直接子级,它将按预期工作。

$(".grid-item").click(function() {
  var selected = this;
  $('.grid>div').not(selected).fadeOut(200);
});

请注意我如何将 .grid div 替换为 .grid > div。 请参阅this JS Fiddle .

我还删除了点击处理程序中的匿名函数,考虑到您发布的上下文,这是不必要的。

关于javascript - 使用 JQuery .not( ) 淡出除所选内容及其子元素之外的所有 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30707937/

相关文章:

javascript - 如何强制 ExtJS 3.4 在隐藏的 tabPanel 上呈现网格

Javascript:将字符串解释为对象引用?

javascript - 回流 Action 触发两次

javascript - 使用类似于 Gmail 的 [x] 按钮将 HTML 表单中输入的电子邮件联系人管理为可移动 block ?

javascript - jQuery 检测 child <ul>

javascript - 加载 header 后维护持久的事件链接类?

jquery - AJAX 调用可以正常运行 MySQL 删除查询,但不会隐藏从页面中删除的表行

javascript - 如何使用 HTML 5 仅播放 Youtube 视频的音频?

javascript - Fade In Hover with fadeout to original state 或 onclick 保持悬停状态

jQuery 淡入/淡出过渡不可见(自从将 Firefox 更新到 34)