有两个部分targetDiv1targetDiv2(未嵌套)。还有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()将使您的代码更快。

09-19 15:33