知道谁触发了事件“聚焦”

时间:2019-05-22 19:25:17

标签: javascript jquery

我在代码中使用focusout,因此我需要知道单击哪个元素来触发focusout,因为如果某个特定元素负责触发{{ 1}}

我尝试使用focusout,但没有用

stopPropagation

1 个答案:

答案 0 :(得分:1)

使用jQuery可以添加具有自定义属性名称的数据属性,例如data-responsible-element;可以使用jQuery's data()方法来检索此内容,以检索失去焦点的元素。

简而言之: 在元素中设置data-{custom-property}="{some-value}",并在触发事件后使用{some-value}方法从data-{custom-property}检索data()

使用此方法,您可以将{some-value}设置为 that 元素的unique identifier,这将使您能够query元素。

$('.focusable').focusout(function(e){
  e.stopPropagation();
  var element_that_lost_focus = $(this).data('responsible-element');
  
  console.log(element_that_lost_focus + ' just lost focus!? D:');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input class="focusable" placeholder="Juan" data-responsible-element="Juan" />
<input class="focusable" placeholder="Carlos" data-responsible-element="Carlos" />
<input class="focusable" placeholder="Martín" data-responsible-element="Martín" />
<input class="focusable" placeholder="John Doe" data-responsible-element="John Doe" />