我得到了一個DIV絕對定位在頁面上的其他元素之上,我希望它在某處被點擊時消失,但不在該絕對定位的div內(或其子元素之一)。讓div消失,onClick「無處不在,但......」
我正在使用jQuery的事件傳播($(document).on(...))頁面上的所有點擊事件。
我想有一個通用的解決方案,而不是白名單或黑名單的標籤,班請。
我不是在尋找'在絕對DIV和其他內容之間放置一個透明圖層'的解決方案,那將是我最後一次重新解決的解決方法。
THX
我得到了一個DIV絕對定位在頁面上的其他元素之上,我希望它在某處被點擊時消失,但不在該絕對定位的div內(或其子元素之一)。讓div消失,onClick「無處不在,但......」
我正在使用jQuery的事件傳播($(document).on(...))頁面上的所有點擊事件。
我想有一個通用的解決方案,而不是白名單或黑名單的標籤,班請。
我不是在尋找'在絕對DIV和其他內容之間放置一個透明圖層'的解決方案,那將是我最後一次重新解決的解決方法。
THX
$(document).on('click', function(e) {
if (!(e.target.id=='myID' || $(e.target).parents('#myID').length>0)) {
//do something
}
});
獲勝者,因爲選擇父母()而不是最接近的(),請參閱http://jsperf.com/jquery-parents-vs-closest/2 – ezmilhouse 2012-03-12 15:13:23
$('html').click(function() {
//Hide whatever you want to hide
});
$('#your_div').click(function(e){
e.stopPropagation();
});
,你也可以嘗試this。
你可以使用e.target檢查什麼已被點擊
$(document).on("click", "*", function(e) {
if(e.target.id !== 'yourdivid'){
$('#yourdivid').hide();
}
//Hide whatever you want to hide
});
編輯 - 如果你還需要檢查孩子你可以做這樣的
$(document).on("click", "*", function(e) {
//check if the target is your div or a child of your div
if($(e.target).closest('div#yourdivid').length !== 1){
$('#yourdivid').hide();
}
//Hide whatever you want to hide
});
這不起作用如果你點擊正文,你必須點擊一個元素。 http://jsfiddle.net/khKb5/1/ – Alex 2012-03-12 14:31:47
jQuery:
$(document).on("click", function(e) {
if($(e.target).closest('#box').length != 1){
$('#box').hide();
}
});
這也適用,如果你直接點擊body
上的某個地方。
本頁面可能會有所幫助:http://stackoverflow.com/questions/152975/how-to-detect-a-click-outside-an-element – Rondel 2012-03-12 14:27:03