2016-03-03 58 views
2

我有一個關於jQuery關閉系統的問題。我創建了這個DEMO from codepen.io爲什麼當前打開的div不關閉

在這個演示中,你可以看到有兩個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"); 
}); 
+0

要做到這一點是必須的。爲了回答你的問題:你需要在你的.Br點擊處理函數中添加一行來刪除CRWT11活動類:$(「.CRTW11」)。removeClass(「CRtW11-active」) ; – WKx

+0

因爲你沒有刪除'Br'點擊處理程序中的'CRtW11-active'和'ReaC-active'類。 –

+0

我已更新您的代碼,並創建一個小提琴親切地檢查.. https://jsfiddle.net/wzbenpw8/是你想要的? – RRR

回答

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

此功能不會爲紅色和藍色的div工作作爲他們的點擊事件在各自單擊功能停止。所以簡單的解決方案將是在相反的點擊函數中添加remove類功能。即

// 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"); 
});