here - 我希望在單擊任何地方但不在div上時發生警報。
當我點擊div時,警報也會顯示。
JS
$("html, body").not('.entry-content').click(function() {
alert('d');
});
HTML
<div class="entry-content"> kkkk </div>
here - 我希望在單擊任何地方但不在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');
});
您正在使用的。不是()過濾器..但它仍然是你的html/body的一部分..所以你需要在click函數中處理它。你也只是結合的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');
});
在你的函數中你有'e'參數,但是在你正在使用'event'的主體中;-) –
@ZoltanToth謝謝..修正了它 –
另外,不要'html,body'(沒有理由('click')' –
您也可以停止傳播點擊
的元素件作品也可通過點擊一個子元素
<div class="entry-content">Element
<span>Sub element</span>
</div>
退房的Fiddle
的問題是,您要添加單擊事件的HTML和BODY標籤。所以,首先當你點擊身體區域時,你會得到2個警報。另外,由於事件傳播的方式,點擊相關的DIV會將click事件傳播到body和html。因此,您需要在點擊處理程序內部進行檢查以確定是否要顯示警報消息。
我修改了下面的jsfiddle,只在選擇器中包含HTML,並檢查處理程序中的entry-content
類。
$("html").click(function(e) {
if(!$(e.target).hasClass("entry-content")){
alert('TEST');
}
});
結合HTML和身體之間的區別是,如果你希望能夠在任何地方點擊頁面上,下面的內容/體的結束位置,你應該使用HTML。否則使用BODY。
它不起作用,因爲'.not('。entry-content')'不會停止冒泡到body和html節點的事件。 –