jQuery:不是没有点击工作

时间:2014-08-07 11:48:57

标签: jquery jquery-selectors

我正在尝试使用:not,但它无效。

示例代码:

HTML:

<div class="main_container">
    <div class="container">

    </div>    
</div>

jQuery的:

$(document).ready(function(){
    $('body:not(.container)').click(function(){
        alert('here');
    });
});

DEMO FIDDLE

在上面的代码中,如果我点击alert .main_container,如果我点击div .container而不是div来>警告不应该。

怎么做?

2 个答案:

答案 0 :(得分:3)

最简单的方法是检查用户实际点击的元素:

$(document).ready(function(){
    $('.main_container').click(function(e){
        if(!$(e.target).is('.container')) {
          alert('ok');
        }
    });
})

您还可以将事件监听器附加到.container,以阻止事件传播:

$('.container').on('click', function(e) {
  e.stopPropagation();
});

如果你想在.container上点击另一个动作,那么这真的值得这样做。

答案 1 :(得分:0)

如果不使用:not jquery选择器,您可以在单击任何内容时检查文档。然后使用jquery的事件对象检查单击的内容并执行首选操作。

有关详细信息,请参阅:http://api.jquery.com/category/events/event-object/

$(function () {
    $(document).on('click', function(e) {
          var target = $( e.target );
          if ( target.is( ".container" ) ) {
            alert('here');
          }                       
    })
});