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

How to exclude a click handler from an element and its descendants

本文关键字:排除 单击 处理 程序 后代 元素      更新时间:2023-09-26

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

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

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

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

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

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

您可以通过放置以下脚本从灯箱中删除处理程序

$(document).ready(function(){
    $('body :not(#lightbox)').unbind('click');
});

但请注意,在此脚本之后,您的点击事件处理程序从未触发。你也可以在你的函数中返回false,这将不会处理该函数的后续脚本。