如何在.not()语句中包含div子元素

时间:2015-09-21 16:29:13

标签: jquery html

我在if语句中使用.not(),目前它没有获取子项或div本身。我想选择父div(mean-container类)和所有子元素,如ul,li和nav。

这是我的Jquery:

jQuery(document).ready(function() {
    jQuery('body').on('click', function(event) {
        if (jQuery('div').not('mean-container')) {
            alert('this is meant to slide up');
        }
    });
});

目前,无论我在哪里点击,都会弹出警告..并且在.not()之前是:

jQuery(document).ready(function() {
    jQuery('body').on('click', function(event) {
        if (jQuery(this).attr('class') !== 'mean-container' || jQuery(this).attr('class') !== 'meanmenu-reveal') {
            alert('this is meant to slide up');
        }
    });
});

但这也做了同样的事情,代码出了什么问题?

HTML(以非动态形式):

<div class="header-left-mid mean-container">
    <div class="mean-bar">
        <a style="right: 0px; left: auto; text-align: center; text-indent: 0px; font-size: 18px;" class="meanmenu-reveal meanclose" href="#nav">X</a>
     <nav class="mean-nav">    
          <ul style="display: block;">
              <li class="level-top"><a href="#" class="level-top"><span>Lorem </span><span class="boder-menu"></span></a></li>
          </ul>
      </nav>
  </div>
</div>

Jquery版本:1.11.0

2 个答案:

答案 0 :(得分:0)

jQuery('div').not('mean-container')返回一个jQuery对象,无论元素是否存在,该对象始终都是真实的。其次,它缺少dot,但仍会返回对象

更好的测试将是

if(!$(this).hasClass('mean-container'))

编辑:

我认为你要找的是看菜单上是否发生clcik,你需要检查事件的目标

jQuery('body').on('click', function(event) {
    if (!jQuery(event.target).closest('.mean-container').length) {
        alert('Click is not on the mean-container');
    }
});

答案 1 :(得分:0)

你在尝试这个吗?:

jQuery(document).ready(function() {
    jQuery('body').on('click', 'div:not(.mean-container)', function(event) {
            alert('this is meant to slide up');
    });
});

我正在使用:不是css的选择器。