首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >$(this)选择的是窗口对象而不是单击的元素jquery。

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

Stack Overflow用户
提问于 2018-03-23 12:06:41
回答 1查看 6.5K关注 0票数 19

我有个很奇怪的问题。我只想选择一个单击的元素。我做了很多次,而且它总是有效的,但是这次,jQuery $( this )选择器没有选择单击的元素,而是选择了window对象。请让我知道,如果你有一个想法,这可能是什么原因。我使用的是jQuery 2.1.4和3.3.5

HTML:

代码语言:javascript
运行
复制
<a class="btn btn-danger btn-xs delete-file"><i class="fa fa-trash" aria-hidden="true"></i> Löschen</a>

jQuery:

代码语言:javascript
运行
复制
$(document).ready( () => {
   $('.delete-file').on('click', () => {
      let element = $(this);
      console.log(element);
    });
});

控制台-输出:

代码语言:javascript
运行
复制
n.fn.init [Window]

而不是:

代码语言:javascript
运行
复制
n.fn.init [a.btn.btn-danger.btn-xs.delete-file]

提前谢谢你!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-23 12:08:10

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

代码语言:javascript
运行
复制
$(document).ready(() => {
  $('.delete-file').on('click', function() {
    let element = $(this);
    console.log(element);
  });
});

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

代码语言:javascript
运行
复制
$(document).ready( () => {
  $('.delete-file').on('click', e => {
    let element = $(e.target);
    console.log(element);
  });
});
票数 52
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49449325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档