获取父节点的属性

时间:2012-02-03 09:19:18

标签: javascript jquery html parent

我正在尝试使用

$(this).parentNode.attr('data-element')

应该在字符串中返回0 - 5但它不起作用。我在像这样的函数中使用它

$('.someClass').each(function(){
    $(this).html(SomeFunction('SomeString', $(this).parentNode.attr('data-element')));
});

所有带有'someClass'类的元素都有一个parentNode

<li class="element" data-element: 1 (or any number from 0 to 5 (including))> </li>

我不知道错误在哪里。我做错了什么?

- 大卫

5 个答案:

答案 0 :(得分:33)

你在同一行代码中混合jQuery和普通javascript,这是行不通的。您可以使用:

$(this).parent().attr('data-element');   // jQuery

this.parentNode.getAttribute("data-element");   // plain javascript

parentNode不是jQuery对象的属性,所以你不能像你那样混合它们。获取父级的jQuery方法是.parent()

答案 1 :(得分:4)

你应该做

 $(this).parent().attr('data-element')

因为你无法在非jQuery对象上调用attr()

答案 2 :(得分:3)

尝试这样做:

$(this).parent().attr('data-element');

有关.parent()等函数的更多信息,请参阅JQuery文档的遍历部分: http://api.jquery.com/category/traversing/

答案 3 :(得分:3)

使用jquery应该是:

$(this).parent().attr('data-element');

不使用jquery,这将是:

this.parentNode.getAttribute("data-element")

答案 4 :(得分:1)

我更喜欢使用:

var item = $(this);

var parent = item.closest(".element"); //using the class for selection

//and then use parent.attr('data-element')