jQuery Click事件中出现意外的箭头函数功能

时间:2017-04-07 01:06:25

标签: jquery

我正在使用箭头函数执行小部分代码的概念,然后我开始获得困扰我的功能。

当您将以下内容与其功能对应物(下面列出)进行比较时:

箭头功能:删除一个然后另一个(当点击#subtest时)

$("#test").click((e) => $(e.target).remove());
$("#subtest").click((e) => true);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="test">test
	<div id="subtest">test2</div>
</div>

功能对应部分:删除两者

$("#test").click(function (e) {
  $(this).remove()
});
$("#subtest").click(function () {
  return true;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="test">test
	<div id="subtest">test2</div>
</div>

我确信这与e.target引用的内容有关,因为如果我使用e.currentTarget似乎有效。

e.currentTarget版本

$("#test").click((e) => $(e.currentTarget).remove());
$("#subtest").click((e) => true);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="test">test
	<div id="subtest">test2</div>
</div>

我没有通过 Google 获得此功能的真正令人满意的答案,我们非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

如果有子元素并且那些孩子被采取行动,

summary()将不会成为选择器的元素

在你的情况下,你有一个实际上是目标的孩子。这很容易通过target

进行验证

相反console.log(e.target)与选择元素相同,不一定与currentTarget相同。在非箭头函数处理程序中,targetcurrentTarget

相同