在这里 -我要警觉,当你点击任何地方,但没有对DIV发生。
当我点击的div,警报也表示。
JS
$("html, body").not('.entry-content').click(function() {
alert('d');
});
HTML
<div class="entry-content"> kkkk </div>
在这里 -我要警觉,当你点击任何地方,但没有对DIV发生。
当我点击的div,警报也表示。
JS
$("html, body").not('.entry-content').click(function() {
alert('d');
});
HTML
<div class="entry-content"> kkkk </div>
您可以使用事件参数,看看到底点击了哪个目标并返回false
$("html, body").click(function(e) {
if ($(e.target).hasClass('entry-content')) {
return false;
}
alert('d');
});
http://jsfiddle.net/keyZw/
您正在使用的。不是()过滤器..但它仍然是你的HTML /身体的一部分..所以你需要处理它的点击功能里面。 你也只是结合的Click事件..
所以
// find html,body - not ones with class=entry-content - bind click
$("html, body").not('.entry-content')
所以,这并不妨碍该警报作为你的div仍然是体内
如前所述..你只需要绑定到真身
$("body").click(function(e) {
if ($(e.target).hasClass('entry-content')) {
return false;
}
alert('d');
});
$("html *").click(function(e) {
if ( e.target.className.indexOf("entry-content") < 0 ) {
alert('d');
}
});
DEMO
原始代码不起作用,因为.not()
适用于选择在它的面前- html
和body
。 他们俩有类的entry-content
,所以事件触发
您也可以停止传播点击的元素上
$("body").click(function() {
alert();
});
$(".entry-content").click(function(e) {
e.stopPropagation();
});
通过点击一个子元素也适用
<div class="entry-content">Element
<span>Sub element</span>
</div>
退房的小提琴
问题是,您要添加单击事件的HTML和BODY标签。 所以,首先你会得到2个警报,当你在身体区域中单击。 同时,由于事件向上传播,点击相关的DIV将传播click事件达到身体和HTML以及方式。 所以,你需要做的点击处理程序内部检查,以确定你是否不想显示警告消息。
我修改你的jsfiddle下面只包括HTML在你的选择,并以检查entry-content
的处理程序中的类。
http://jsfiddle.net/m2eqS/6/
$("html").click(function(e) {
if(!$(e.target).hasClass("entry-content")){
alert('TEST');
}
});
结合HTML和身体之间的区别是,如果你希望能够在任何地方点击页面上,下面的内容/体的结束位置,你应该使用HTML。 否则,用身体。