从jQuery选择中排除元素

时间:2013-04-27 06:00:05

标签: javascript jquery

我正在尝试将.click()事件用于div.content,除非点击具有特定类的内容,例如.noclick。示例html:

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

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

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

如果我点击.content上的任何地方,除了课程为.noclick的内容之外,如何点击此功能?

4 个答案:

答案 0 :(得分:3)

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

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

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

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

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

答案 1 :(得分:3)

$('.content').click(function(event) {
   // ...
}).find('.noclick').click(function(event) {
   event.stopPropagation();
});

答案 2 :(得分:0)

$('.content').click(function(e){
    if(!$(e.target).is('.noclick')){
        // Handle click event
    }
});

答案 3 :(得分:0)

$('.content').
on('click', '.noclick', function(){return false;}).
click(function(){alert("click")})

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

http://jsfiddle.net/FshCn/