$(this) 是选择窗口对象而不是单击的元素 jquery



我有一个非常奇怪的问题。我只想选择一个点击的元素。我这样做了很多次,它总是有效,但这一次,jQuery $(this( 选择器不选择单击的元素,它选择窗口对象。如果您有想法,请告诉我,这可能是什么原因。我正在使用jQuery 2.1.4和Twitters Bootstrap 3.3.5

.HTML:

<a class="btn btn-danger btn-xs delete-file"><i class="fa fa-trash" aria-hidden="true"></i> Löschen</a>

j查询:

$(document).ready( () => {
   $('.delete-file').on('click', () => {
      let element = $(this);
      console.log(element);
    });
});

控制台输出:

n.fn.init [Window]

而不是:

n.fn.init [a.btn.btn-danger.btn-xs.delete-file]

提前谢谢你!

这是因为您使用的是箭头函数。此函数的内容范围不会根据标准函数定义而更改。要使this正常工作,您需要更改逻辑:

$(document).ready(() => {
  $('.delete-file').on('click', function() {
    let element = $(this);
    console.log(element);
  });
});

或者,您可以保留箭头函数,并通过引发的事件的 target 属性检索对单击的元素的引用:

$(document).ready( () => {
  $('.delete-file').on('click', e => {
    let element = $(e.target);
    console.log(element);
  });
});

最新更新