我完全不知道这件事。我在页面上有三个元素,类为.topic-link
。
<div id="parent1">
<a href="#" class="topic-link"></a>
</div>
<div id="parent2">
<a href="#" class="topic-link"></a>
</div>
<div id="parent3">
<a href="#" class="topic-link"></a>
</div>
我可以在JS控制台中运行$('.topic-link').eq(0).parent();
并返回正确的父级。但是当我迭代它们时,我每次都会得到一个空物体。
$('.topic-link').each( () => {
console.log($(this).parent());
});
// returns 3 empty objects
答案 0 :(得分:10)
箭头功能没有自己的this
所以你拥有的不等于
$('.topic-link').each(function () {
console.log($(this).parent());
});
在您的情况下,this
是window
(或document
或其他任何内容,具体取决于调用范围)没有父dom节点
答案 1 :(得分:3)
来自@ charlietfl的回答:你得到这种行为是因为箭头功能没有绑定他们自己的@end
。
要继续使用箭头功能,解决方法是使用.each()
中的第二个参数,即对象/数组的值。
示例(由于this
变量也未绑定,因此需要参数):
arguments