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

标签 javascript jquery jquery-selectors this

<分区>

我有一个非常奇怪的问题。我只想选择一个点击的元素。我做了很多次,它总是有效,但这次,jQuery $(this) 选择器没有选择被点击的元素,它选择了 window 对象。请让我知道,如果你有想法,这可能是什么原因。我正在使用 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>

jQuery:

$(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);
  });
});

关于javascript - $(this) 正在选择窗口对象而不是单击元素 jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49449325/

相关文章:

javascript - NodeJS 中的 "done"属性是什么?

javascript - 如何在循环中重新启动具有随机值的 CSS 动画?

javascript - for循环数组长度

javascript - 我如何使用 jquery 访问具有 value=xx 的所选项目名称的值

jquery - 尝试从 get() 请求返回的 html 中选择 'body' 标记

javascript - 在 html 文件中有 2 个 css 代码块如何使用 JS 只使一个工作?

javascript - jquery Focus 选中整个页面

jquery - 一次点击即可实现多种 jQuery 效果

javascript - 如何将数据(JSON 格式)从本地数据库绑定(bind)到 Kendo UI Scheduler?

javascript - $ ('.myclass' ) 仅当在此 ID 下时