我知道e.target包含光标正下方元素的信息,但是如果我想知道div中有一个表> tr> td>按钮的div的类名怎么办?我是点击该td内的那个按钮。我知道这个事件会冒泡,应该有办法找出div是否存在于冒泡的水平。任何帮助。
场景:按钮位于模态窗口内。如何在单击其中的按钮时找到模态窗口类名称。
答案 0 :(得分: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>
有一些已知的类,但你需要检查其他类,你应该使用更具体的选择器。
答案 1 :(得分:3)
是的,因为你说事件会冒泡到你的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)
});
<强>更新强>
修复了获取附加事件的原始div的引用。来自event.delegateTarget的Event object。感谢Cristophe和Kevin B.发现错误。
见工作demo
答案 2 :(得分:0)
您可以使用.parent()
获取父div等属性,例如id:http://jsbin.com/ololad/1/edit
$('button').click(function(){
console.log($(this).parent().attr('id'));
});