2010-05-24 80 views
2

我正在查詢中創建一個彈出窗口。所有的懸停彈出都很好。我讓它看到一個計時器在用戶的鼠標離開div時關閉它。如果他在定時器完成之前再次輸入div,則清除定時器。jQuery:如果用戶點擊了div

這很好,但如果用戶點擊了div?我想要也關閉div。唯一的問題是我不想將點擊事件附加到頁面上的包裝(因爲它包含彈出菜單)。我已經看到了用透明div包裹整個屏幕的技術,然後附加一個點擊事件來打。雖然這可能會起作用,但如果用戶點擊意圖點擊鏈接的隱藏div,則會使用戶感到困惑。他將不得不點擊鏈接兩次。一旦兩個關閉div(隱藏鏈接),另一次實際點擊思考。此外,你在連接到頁面上任何被屏蔽元素的鼠標光標中鬆動(例如鏈接光標指針等)。

必須有一種方法來檢查用戶是否在沒有模式的情況下單擊了div並且沒有將事件附加到整個頁面(包括頁面包裝和子元素)。

onclicksomewhereelse =「closeme();」

大聲笑。

回答

4

假設:

<div id="dialog">...</div> 

和:

#dialog { display: none; } 

使用:

$(document).click(function() { 
    if ($(this).parents("#dialog").length > 0) { 
    $("#dialog").hide(); 
    } 
}); 

不會與你有其他click()處理程序干擾。

+0

$(this)是對文檔的引用,所以它沒有父母隱藏永遠不會被調用。 – 2010-06-15 15:18:59