我在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
答案 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的选择器。