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

Rur*_*pot 4 javascript jquery this jquery-selectors

我有一个非常奇怪的问题.我只想选择一个被点击的元素.我做了很多次,它总是工作,但这次,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>
Run Code Online (Sandbox Code Playgroud)

jQuery的:

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

控制台输出:

n.fn.init [Window]
Run Code Online (Sandbox Code Playgroud)

代替:

n.fn.init [a.btn.btn-danger.btn-xs.delete-file]
Run Code Online (Sandbox Code Playgroud)

先感谢您!

Ror*_*san 11

这是因为你正在使用箭头功能.根据标准函数定义,此函数的内容范围不会更改.为了this工作,你需要改变逻辑:

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

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

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

  • 非常感谢。这解决了问题。我刚刚意识到,这是我这次做的唯一不同的事情。 (2认同)