每当用户从该TR移除焦点时,我都试图检索TR元素的ID。触发事件很容易,但我无法确定如何最好地检索ID
$(".row-identifying-class").focusout(function (e) {
var rowID = e.target.id; // Returns the ID of the TD/input/label etc the user last clicked on
alert(e.target);
})
问题似乎是虽然上面的函数在我从TR中移除焦点时触发,但事件实际上是由子元素(例如TD,输入框,按钮等)触发的,而不是父元素。
有没有办法检索原始TR,而不必追溯每个对象的父级,直到我点击TR元素?也许在创建函数时直接传入ID?
答案 0 :(得分:3)
您的更正是e.target
将引用引发新事件的元素,该元素导致focusout
触发tr
。
相反,请使用currentTarget
属性,因为它将指向事件绑定元素,或者更简单地指向this.id
:
$(".row-identifying-class").focusout(function(e) {
console.log(e.currentTarget.id);
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr class="row-identifying-class" id="tr">
<td>
<input type="text" value="cause a focusout on me..." />
</td>
</tr>
</table>
&#13;
答案 1 :(得分:2)
使用this
或e.currentTarget
代替e.target
$(".row-identifying-class").focusout(function (e) {
var rowID = this.id;
alert(rowID);
});
jQuery事件处理程序中的 this
将是事件发生的匹配选择器的元素实例