我知道,e.target包含光標下方元素的信息,但是如果我想知道具有表格> tr> td>按鈕的div的類名稱,並且我點擊了該td內的那個按鈕。我知道這個事件冒了出來,應該有一種方法來確定div是否存在於冒泡級別。任何幫助。如何在javascript/jquery中查找'最深'div的類名?
場景:按鈕位於模式窗口內。如何在單擊其中的按鈕時找到模態窗口類名稱。
我知道,e.target包含光標下方元素的信息,但是如果我想知道具有表格> tr> td>按鈕的div的類名稱,並且我點擊了該td內的那個按鈕。我知道這個事件冒了出來,應該有一種方法來確定div是否存在於冒泡級別。任何幫助。如何在javascript/jquery中查找'最深'div的類名?
場景:按鈕位於模式窗口內。如何在單擊其中的按鈕時找到模態窗口類名稱。
使用.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>
有一些已知的類,但您需要檢查其他類,則應使用更具體的選擇器。
是如你所說的事件將泡到你的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.delegateTarget從Event object。感謝Cristophe和Kevin B.發現錯誤。
見工作demo
您可以使用.parent()
獲取父格屬性,如ID:http://jsbin.com/ololad/1/edit
$('button').click(function(){
console.log($(this).parent().attr('id'));
});
「爲委派事件,這是選擇相匹配的元素的」 http://api.jquery。 com/on/ – Christophe
這是錯誤的。在這種情況下,「this」是單擊的元素,而不是您要委派的容器。 http://jsfiddle.net/chdh3/ –
謝謝你們兩位發現我的錯誤,我使用'e.delegateTarget'修正了我的答案。 – Nelson