javascript - 为什么当前打开的 div 没有关闭

标签 javascript jquery css

我有一个关于 jQuery 关闭系统的问题。我创建了这个 DEMO 来自 codepen.io

在此演示中,您可以看到有两个 div(红色和蓝色)。当您单击红色 div 时,.CRtW11 将处于事件状态。但是在你点击蓝色的 div 之后,.CRtW11 就停留在那里;它需要处于非事件状态。那里有什么问题,谁能告诉我?

JS

// FOR cR
$("body").on("click", ".cR", function(event) {
   event.stopPropagation();
   var $current = $(this).find('.CRtW11').toggleClass("CRtW11-active");
   $('.CRtW11').not($current).removeClass('CRtW11-active');
   var $currenta = $(this).find('.ReaC').toggleClass("ReaC-active");
   $(".ReaC").not($currenta).removeClass("ReaC-active");
});
$("body").click(function() {
   $(".CRtW11").removeClass("CRtW11-active");
   $(".ReaC").removeClass("ReaC-active");
});

// FOR Br
$("body").on("click",".Br", function(event) {
    event.stopPropagation();
    var $current = $(this).find(".BRc").toggleClass("BRc-active");
   $(".BRc").not($current).removeClass("BRc-active");
});
$("body").on("click", function(){
   $(".BRc").removeClass("BRc-active");
});

最佳答案

$("body").click(function() {
   $(".CRtW11").removeClass("CRtW11-active");
   $(".ReaC").removeClass("ReaC-active");
});

此功能不适用于红色和蓝色 div,因为它们的点击事件在各自的点击功能中停止。所以简单的解决方案是在相反的点击功能中添加删除类功能。即

    // FOR cR
$("body").on("click", ".cR", function(event) {
   $(".BRc").removeClass("BRc-active");
   event.stopPropagation();
   var $current = $(this).find('.CRtW11').toggleClass("CRtW11-active");
   $('.CRtW11').not($current).removeClass('CRtW11-active');
   var $currenta = $(this).find('.ReaC').toggleClass("ReaC-active");
   $(".ReaC").not($currenta).removeClass("ReaC-active");
});
$("body").click(function() {
   $(".CRtW11").removeClass("CRtW11-active");
   $(".ReaC").removeClass("ReaC-active");
});

// FOR Br
$("body").on("click",".Br", function(event) {
    $(".CRtW11").removeClass("CRtW11-active");
   $(".ReaC").removeClass("ReaC-active");
    event.stopPropagation();
    var $current = $(this).find(".BRc").toggleClass("BRc-active");
   $(".BRc").not($current).removeClass("BRc-active");
});
$("body").on("click", function(){
   $(".BRc").removeClass("BRc-active");
});

关于javascript - 为什么当前打开的 div 没有关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35765199/

相关文章:

javascript - Vue-Test-Utils 的 "mount"和 "shallowMount"之间的区别?

JavaScript数据访问设计

javascript - 除某些元素外禁用右键单击

html - 针对旧版浏览器的固定页脚解决方案

javascript - Safari 中的黑框而不是图像

jquery - 仅当第一个 br 标 checkout 现在段落中文本之前时,如何删除它?

javascript - 比较出错了,或者说,这怎么可能是假的?

javascript - 在 React 中使用 useState 设置 promise 状态时应用程序不断重新渲染

javascript - 如何根据子标签的 innerHTML 选择父标签?

jquery - 从左侧滑入切换