2011-10-05 25 views
0

我有一個幫助div變得可見,我做了這樣,如果點擊是在div之外,它會關閉幫助div。jquery冒泡dom,看看是否有任何匹配的ID

如果用戶在div內部單擊,我希望div保持打開狀態。對於常規的Javascript,我使用冒泡代碼來匹配父母的ID。我的部分JS代碼是

var click = (e && e.target) || (event && event.srcElement); 
var match = "divid"; 

while(click.parentNode){ 
     if(click==match) { 
     return;//do nothing 
      }//if 

什麼是相當於這個遞歸JavaScript代碼的jquery?

TIA

編輯以避免混淆。

+0

所以你有一個事件會聽取頁面上任何地方的點擊,但問題是這包括'打開'div。除了這個div,你只想聽任何東西。或者更準確地說,它可以在div上聽,但是如果聽到一聲咔噠聲,它應該什麼也不做。那是對的嗎? –

+0

@gregp,是的。如果點擊是在div內,那麼它不應該關閉div。 – Jamex

回答

0

你可以返回false,它會工作。或者你可以使用stopPropagation(),它是內置到jQuery的效用函數:

jQuery("#divid").click(function(event) { 
    event.stopPropagation(); 
}); 

小提琴這裏:http://jsfiddle.net/W8MfD/

返回假的方法仍然會冒泡返回false,據我瞭解它。

我的確傾向於認爲,如果您預計會使用很多這類事件,您將從使用某種小部件框架中受益。你正在創建的行爲是普遍的,大多數框架已經擁有它。 jQuery UI並不差(儘管在我看來它可能會更好)。那裏也有其他人。

+0

嗨gregp,謝謝,我明白那一部分。我只是想知道如何冒泡。此外,由於某些原因,該代碼在初始加載時無法正常工作,只有在運行一次後才能正常工作。 – Jamex

+0

總是在小提琴中第一次運行。我實際上更喜歡使用.delegate()而不是.click()來解決時間問題,但我只是很快將它們放在一起。至於你的問題:如果你真的想手動冒泡,你不需要jQuery。我想我錯過了你最初的問題。 –

相關問題