2010-06-19 21 views
1

我有一個搜索輸入框,在翻轉按鈕時出現。我希望能夠點擊頁面上的任何位置來重新隱藏搜索,而不是擁有自己的關閉按鈕。jQuery - 單擊(幾乎!)任意位置以隱藏div

如果我附加一個點擊處理程序的文件這工作正常,但問題是搜索本身是文件的一部分。因此,如果您單擊輸入(當然,您需要執行以輸入搜索),搜索功能將消失。

我希望我能夠寫一個函數soemthing這樣的...

$(document).not("#search").click(function(){ 
$('#search_holder').fadeOut('fast'); 
}); 

即從搜索應用單擊處理整個文檔分開。不幸的是,這是行不通的。

所以最新的答案?

,請多關照

回答

3

從傳播取消click事件,當它從你關心的按鈕來源:

$("#search").click(function(event){ 
    event.stopPropagation(); 
}); 
+0

@Starx我看到的回答說:「10分鐘前」,而尼克的是「回答11分鐘前安德的反應」。爲什麼downvote安德? – 2010-06-19 02:10:03

+0

對不起,恩德,沒有注意到時間 – Starx 2010-06-19 02:21:17

+0

太棒了,那有效。多謝你們。 – swisstony 2010-06-19 02:36:18

3

您可以通過冒泡停止click事件做,像這樣:

$(document).click(function() { 
    $('#search_holder').fadeOut('fast'); 
}); 
$("#search").click(function(e) { 
    e.stopPropagation(); 
}); 

event.stopPropagation()防止泡沫從去任何更高,一路document觸發.fadeOut(),無處不在其他(默認情況下)冒泡爲document,導致淡出發生。

0
Try this Its working perfect for me. 

$(document).mouseup(function (e) 
{ 
    var searchcontainer = $("#search_container"); 

    if (!searchcontainer.is(e.target) // if the target of the click isn't the container... 
     && searchcontainer.has(e.target).length === 0) // ... nor a descendant of the container 
    { 
     searchcontainer.hide(); 
    } 
}); 
+0

臃腫......其他答案是更好。 – 2013-08-11 07:11:37

相關問題