在每个循环中获取jQuery中的元素的父元素

时间:2016-10-07 18:37:39

标签: javascript jquery

我完全不知道这件事。我在页面上有三个元素,类为.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 

2 个答案:

答案 0 :(得分:10)

箭头功能没有自己的this所以你拥有的不等于

$('.topic-link').each(function () {
  console.log($(this).parent());
});

在您的情况下,thiswindow(或document或其他任何内容,具体取决于调用范围)没有父dom节点

答案 1 :(得分:3)

来自@ charlietfl的回答:你得到这种行为是因为箭头功能没有绑定他们自己的@end

要继续使用箭头功能,解决方法是使用.each()中的第二个参数,即对象/数组的值。

示例(由于this变量也未绑定,因此需要参数):

arguments