4

我正在尝试使用 jquery 获取 :not click 事件。本质上,我正在尝试构建一个灯箱。工作正常,但我希望它仅在单击黑色空间时关闭。如果图像被点击,灯箱不应该隐藏。

请看例子: http: //jsfiddle.net/nrUCc/7/ 我试过这个:(js列第42行)

 $('#lightbox').not('#lightbox img').click(function(e){
        $(this).css('display','none');
 })

..但是当我点击图像时它仍然会触发。

有什么建议么?谢谢

4

1 回答 1

1

您可以将目标元素与this

$('#lightbox').click(function(e) {
    if (e.target === this) { 
        $(this).css('display','none');
    }
});

e.target是触发click处理程序的元素,this#lightbox元素。所以基本上你是说只有在被点击时才触发click处理程序。#lightbox这也将防止任何其他子元素#lightbox触发上述click处理程序。

这是一个小提琴


另一种方法是向元素添加另一个click处理程序#lightbox > img,并简单地阻止单击事件传播和触发上述事件:

$('#lightbox > img').click(function(e) {
    e.stopPropagation();
});
于 2013-05-03T13:16:40.313 回答