如何从元素及其后代中排除单击处理程序

时间:2015-09-29 10:04:57

标签: javascript jquery

如何从附加到正文的处理程序中排除#lightbox

$('body :not(#lightbox)').click(function() {    
    $('#lightbox').hide();
});

Lighbox居中。当用户从框中向右或向左单击时,应该关闭它。当单击#lightbox或其后代时,不应发生这种情况。

2 个答案:

答案 0 :(得分:1)

一个选项是阻止来自lightbox元素的点击事件传播,但它可能不是安全选项,因为它可能会破坏其他全局处理程序。

另一个是查看事件目标是否在lightbox元素

$('body').click(function (e) {
    if (!$(e.target).closest('#lightbox').length) {
        $('#lightbox').hide();
    }
});

答案 1 :(得分:0)

您可以通过放置以下脚本

从灯箱中删除处理程序
$(document).ready(function(){
    $('body :not(#lightbox)').unbind('click');
});

但请注意,在此脚本之后,您的click事件处理程序从未触发过。 此外,您可以在函数内返回false,这将不会处理该函数的其他脚本。