在焦点输出时检索父元素ID

时间:2017-07-13 14:31:58

标签: javascript jquery html dom html-table

每当用户从该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?

2 个答案:

答案 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;
&#13;
&#13;

答案 1 :(得分:2)

使用thise.currentTarget代替e.target

$(".row-identifying-class").focusout(function (e) {
    var rowID = this.id; 
    alert(rowID);
});
jQuery事件处理程序中的

this将是事件发生的匹配选择器的元素实例