我的DOM看起來是這樣的:檢測外單擊與特定類的div並隱藏他們
<div class = filter x>
<div class = a>
<ul><li>……..</li></ul>
</div>
</div>
<div class = filter y>
<div class = a>
<ul><li>……..</li></ul>
</div>
</div>
無論是與類的div的下拉菜單。預期的功能是:
- 每當我點擊與類過濾器的div,JS-活動類添加 和下拉菜單中打開。
- 每當我點擊除div或 以外的任何地方的下拉菜單,js-active類將被刪除,並且隱藏下拉菜單。
- 一次只有兩個下拉菜單中的一個打開。
,我處理的另一項活動是,如果一個下拉是可見的,我點擊另一個下拉列表中,第一個隱藏(刪除類JS活性)
我可以用下面的代碼來實現這一目標:
$(document).on('mouseup touchend', function(e){
var xContainer = $(‘.filter x’);
var yContainer = $(‘.filter y’);
if (!xContainer.is(e.target) && xContainer.has(e.target).length === 0)
{
xContainer.removeClass('js-active');
}
if (!yContainer.is(e.target) && yContainer.has(e.target).length === 0)
{
yContainer.removeClass('js-active');
}
});
我想優化此代碼。我嘗試使用jQuery「each」來迭代所有使用類過濾器的div,並使用相同的邏輯,但它沒有按預期工作。任何的意見都將會有幫助。謝謝。
https://jsfiddle.net/arunpjohny/y3br116y/1/? –