使用jQuery委托事件处理程序时,如何获取后代选择器?例如,在下表中,我想选择单击的表行:
<div id='timeline'>
<table>
<tr data-somedata=5><td>First Row</td></tr>
<tr data-somedata=100><td>Another row</td></tr>
</table>
</div>
该表是动态添加的,因此我使用委托的事件处理程序。
$("#timeline").on('click', $("tr"), function(event){
console.debug($(this)); // This selects the entire #timeline
console.debug(event.target); // This selects the <td> element, not the <tr>
});
如何使用上面委托的事件处理程序选择tr元素?
此外,如果某人有一个只有JavaScript的解决方案,那也会很棒。
答案 0 :(得分:1)
我把解决方案(我在评论部分中提到的)用于帮助未来的读者。
您已将jQuery object
作为selector
传递,您需要将代码更改为以下内容,然后$(this)
将成为tr
:
$('#timeline').on('click', 'tr', function(event){
var $tr = $(this);
// play with $tr
});
有关此on
的更多信息:.on()
答案 1 :(得分:1)
代码中的错误很少。
>>> x = np.arange(5)
>>> np.in1d(x, [3,4])
array([False, False, False, True, True], dtype=bool)
>>> np.argwhere(_)
array([[3],
[4]])
除了你的代码是好的
1.its `timeline` not `#timeline`
2.you can simply refer as tr it should not be $('tr')
&#13;
$("timeline").on("click","tr",function(){
alert($(this).attr('data-somedata'));
});
&#13;