2012-12-07 40 views
1

我知道,e.target包含光標下方元素的信息,但是如果我想知道具有表格> tr> td>按鈕的div的類名稱,並且我點擊了該td內的那個按鈕。我知道這個事件冒了出來,應該有一種方法來確定div是否存在於冒泡級別。任何幫助。如何在javascript/jquery中查找'最深'div的類名?

場景:按鈕位於模式窗口內。如何在單擊其中的按鈕時找到模態窗口類名稱。

回答

3

使用.closest()遍歷了DOM到最近的比賽:

var parentDiv = $(yourButton).closest('div'); 

或者按鈕的click

$(yourButton).click(function() { 
    var nearestParentDiv = $(this).closest('div'); 
    // And read its class 
    console.log(nearestParentDiv.attr('class')); 
}); 

的選擇.closest()接受,當然可以比這個更具體,所以如果模態窗口<div>有一些已知的類,但您需要檢查其他類,則應使用更具體的選擇器。

3

是如你所說的事件將泡到你的DIV,所以只要股利處理該事件與.on(),像這樣:

$('#yourdiv').on('click',':button',function(e) { 
    alert($(e.delegateTarget).attr('class'));//alerts the classes of #yourdiv 
    alert($(this).attr('id'));//alerts the id of the clicked button (if have one) 
}); 

UPDATE:
固定獲得參考原始分區的事件附加。與event.delegateTargetEvent object。感謝Cristophe和Kevin B.發現錯誤。

見工作demo

+0

「爲委派事件,這是選擇相匹配的元素的」 http://api.jquery。 com/on/ – Christophe

+0

這是錯誤的。在這種情況下,「this」是單擊的元素,而不是您要委派的容器。 http://jsfiddle.net/chdh3/ –

+0

謝謝你們兩位發現我的錯誤,我使用'e.delegateTarget'修正了我的答案。 – Nelson