有两个部分targetDiv1
和targetDiv2
(未嵌套)。还有collapsibleDiv
部分。我需要在元素targetDiv2
之外单击时运行一个函数(折叠div);但是单击targetDiv1
时不应触发该功能。使用下面的代码,我将无法实现此目标。任何帮助都将非常棒...
$(document).click(function(e) {
if(!$(e.target).closest('.targetDiv1').length && !$(e.target).is('.targetDiv1')) {
$('.collapsibleDiv').slideDown();
}
});
JSFiddle根据@Kweiss https://jsfiddle.net/vn8gmu8g/的答案
最佳答案
您希望函数在Div1或Div2之外的单击上执行,但是您的代码仅排除Div1。只需添加Div2。
$(document).click(function(e) {
var $target = $(e.target);
if(!$target.closest('.targetDiv1').length && !$target.hasClass('targetDiv1') &&
!$target.closest('.targetDiv2').length && !$target.hasClass('targetDiv2')) {
$('.collapsibleDiv').slideDown();
}
});
将
e.target
保存在变量中并使用hasClass()
将使您的代码更快。