在元素中单击时阻止单击事件触发,包括其任何及所有子元素

时间:2015-03-16 18:52:38

标签: jquery events children

我有一个打开和关闭固定元素的脚本。这是一个覆盖黑色背景的地方(比如点击视频时的Facebook),当用户点击黑色的任何地方时,叠加层将被关闭。但是,如果用户点击内部容器,或任何元素应保持打开状态。

如果我点击任何一个孩子,我的脚本会关闭内部容器。如何防止这种情况?

docu = $(document),
quot = $('.quote'),
quot_over = $('.quote_overlay'),
quot_cont = $('.quote_container');

quot.click(function(event) {
    quot_over.toggle(1, function() {
        docu.click(function(event) {
            var target = $(event.target);

            if(!target.is(quot_cont)) {
                quot_over.hide();

                docu.unbind('click');
            }
        });
    });
});

1 个答案:

答案 0 :(得分:1)

我不确定为什么你会在那里有这条线:

quot_over.toggle(1, function()

但是在它评估点击的位置之前立即关闭它,所以你需要删除它。

其次,您只是检查点击是否在quote_container上,而不是检查是否在quote_container的任何一个孩子身上。

使用JSFiddle:http://jsfiddle.net/dsnosw5p/4/