[英]Jquery: How to hide a div when user clicks on anything BUT that div. No overlay
我在想.one
在這種情況下有用嗎? 但我不確定該怎么做...
單擊搜索鏈接時,出現一個搜索框。 我希望用戶能夠在不關閉該div的情況下單擊該div中的任何內容,但是當用戶單擊該div之外的任何內容時,該div就會淡出。
也許將blur
事件用於該任務的搜索框輸入上?
$('div.search').find('input').blur(function() {
$('div.search').hide();
$('a#search').show();
});
$('a#search').click(function() {
var $a = $(this);
$a.hide();
$('div.search').show();
});
這樣的事情。
您應該將click事件綁定到文檔/正文上:
var thediv = $("#thediv.youwant");
// sluit resultaten met document click - niet wanneer op sayt-container wordt geklikt
$(document).click(function(e){
if(e.target.id != thediv.attr("id") && $(e.target).parents(thediv.selector).length == 0)
{
thediv.hide();
}
});
您必須稍微調整$(e.target).parents(thediv.selector).length == 0)部分,這對於我的情況還是很具體的。
這段代碼檢查(文檔onclick)是否不是div的目標並且不是該div中的元素。 並隱藏它。
使用文檔作為單擊。 我們還在mydiv
上使用stopPropagation()
,因此任何非mydiv
單擊都會使其淡出。
$('button, .mydiv').click(function(e) {
e.stopPropagation();
$('.mydiv').slideDown();
})
$(document).click(function() {
$('.mydiv').fadeOut();
})
我認為這是您想要的解決方案:
<div id="hi" style="height:100px; width:100px;border:1px solid #ddd"></div>
$('*',document.body).click(function(e){
e.stopPropagation();
var dom = $(this).get(0);
if($.trim(dom.id) != 'hi')
$('#hi').hide();})
謝謝。
完整答案演示位於: http : //jsfiddle.net/leonxki/kSarp/
但是這是一個模仿您的需求的jquery代碼片段:
(function toggleSearchField() {
var $searchBoxDiv = $('#searchBoxContainer');
$(document).bind('click', function(evnt) {
var $target = $(evnt.target);
if ($target.is('#toggleSearchOn')) {
$searchBoxDiv.fadeIn();
return;
} else if ($target.is('#searchBoxContainer') || $searchBoxDiv.has(evnt.target).length) {
return;
}
$searchBoxDiv.hide();
});})();
我試圖使代碼盡可能具有描述性,以避免對其進行注釋,但是請告知您是否需要注釋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.