点击某个元素时,运行某js,点击这个元素之外结束,如果如下写还是没有排除这个元素:
$('body').not('.a')
jQuery这样解释.not:
返回不带有类名 "intro" 的所有 <p> 元素
$("p").not(".intro")
那么上面就翻译成:
$('body').not('.a')
返回不带有类名 “a” 的所有<body>元素
还有什么方法获取除.a之外的元素?
一个页面一般都只有一个body标签, 是不是不包含class=a 的body标签 所以获取不到吧
$('div:not(.a)')
试试
$('*').not('.a');
为什么要以body为参考呢,换个div不好吗?一般没有另外的body吧。
$("body").not(".a")
这个表达式的意思不是说返回所有body下的元素中不带有".a"的元素,not是对于前一个集合的二次筛选,意思是所有body元素中不是".a"的元素。
看你的描述,可以通过这样的方法折衷实现。
$('body').click(function(e) {
var _con = $('.a '); // 设置目标区域
if (!_con.is(e.target) && _con.has(e.target).length === 0) {
}
});
$(document).on('click,function(){
$(this).hasClass('a')?console.log(1):console.log(2);
})
这样应该能达到你想要的效果