0

我试图让一个.click()事件在一个div.content除非单击具有特定类的东西,例如,.noclick。示例 html:

<div class="content">
    <a href="#" class="noclick">
</div>

这样做不起作用,因为<a>标签在技术上不在选择中:

$('.content').not('.noclick').click(function(){/*blah*/});

.content如果我单击除 class 之外的任何位置,如何使单击功能正常工作.noclick

4

4 回答 4

3

您必须从回调中排除它们:

$('.content').click(function(e) {
    if ($(e.target).hasClass('noclick')) return;
});

或者阻止事件离开这些元素:

$('.noclick').click(function(e) {
    e.stopPropagation();
});

我会选择第二个。您可以删除它,您当前的代码(减去.not())将起作用。

于 2013-04-27T06:02:23.070 回答
3
$('.content').click(function(event) {
   // ...
}).find('.noclick').click(function(event) {
   event.stopPropagation();
});
于 2013-04-27T06:02:56.947 回答
0
$('.content').click(function(e){
    if(!$(e.target).is('.noclick')){
        // Handle click event
    }
});
于 2013-04-27T06:03:02.663 回答
0
$('.content').
on('click', '.noclick', function(){return false;}).
click(function(){alert("click")})

取消对“.noclick”的点击,但在其他地方触发点击

http://jsfiddle.net/FshCn/

于 2013-04-27T06:17:32.333 回答