javascript - jquery 单击以使用 attr id 关闭当前 div

标签 javascript jquery css

我在使用 jquery secon click to close opened div 时遇到一个问题。

我创建了这个 DEMO 来自 codepen.io

在此演示中,您可以看到有两个蓝色按钮 div。因此,在单击第一个按钮之前,在单击第二个按钮之后,第一个 <div class="emoWrap" id="ac1">没有关闭。

我尝试了以下js代码:

$(document).ready(function() {
   $("body").on("click", ".button", function(e) {
      e.stopPropagation();
      var ID  = $(this).attr("id");
      $("#ac" + ID).toggleClass("emoWrap-active");
      /*var $current = $(this).find('.emoWrap').toggleClass("emoWrap-active");
      $('.emoWrap').not($current).removeClass('emoWrap-active');*/
   });
   $("body").click(function(){
         $(".emoWrap").removeClass("emoWrap-active");
    });
});

HTML

<div class="container">
   <div class="button" id="1">1</div>
   <div class="emoWrap" id="ac1">
      <div class="Emojis">For 1</div>
   </div>
</div>
<div class="container">
   <div class="button" id="2">2</div>
   <div class="emoWrap" id="ac2">
      <div class="Emojis">For 2</div>
   </div>
</div>

最佳答案

尝试 this codepen example ,我对其进行了编辑,以便在单击其他 emoWraps 时关闭所有其他 emoWraps。这也意味着它是可扩展的,只需将 IDAmount 更改为您拥有的 emoWraps 的数量。

这是编辑后的 ​​JavaScript 代码:

var IDAmount = 2;
$(document).ready(function() {
   $(".button").on("click", function(e) {
      e.stopPropagation();
      var ID  = $(this).attr("id");
      $("#ac" + ID).toggleClass("emoWrap-active");
      for(var i = IDAmount; i >= 1; i--){
         if(i != ID){
            $("#ac" + i).removeClass("emoWrap-active");
         }
      }
   });
});

关于javascript - jquery 单击以使用 attr id 关闭当前 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34794115/

相关文章:

html - 在移动版本中居中图像

javascript - 如何使用函数回调提交更改表单

javascript - 互斥图像

javascript - React Redux - 从简单操作中调用函数会导致 "not a function"错误

javascript - 无限滚动 jQuery 和 Laravel 5 分页

javascript - jqGgrid : mutli-level grouping summary value

jquery - 从文本框插入多个选择框

javascript - 当主导航链接悬停时在侧面菜单中显示链接

javascript - 访问从 AJAX 创建的 DOM 中的信息

javascript - 使用 onclick 函数动态添加表格行