var x = $(this).parent().parent().parent().parent();
x.id
向我undefined
,而x.attr('id')
返回正确的ID。
谁能告诉我这两者之间的区别。
顺便说一下,有没有更好的方法来获取$(this).parent().parent().parent().parent()
,我不想为它们分配ID,因为这会使得使用这些元素变得更加困难。
由于
答案 0 :(得分:11)
x.id
在x
是DOM元素时有效,而在x
是jQuery对象时则无效。
如果x
是jQuery对象,您可以这样做:
x[0].id
从jQuery对象获取第一个DOM元素,或者您可以使用:
x.attr('id')
使用jQuery方法检索属性。
至于你的其他问题,更换这个的更好方法是:
$(this).parent().parent().parent().parent()
是将一个类放在所需的父级上并使用它:
$(this).closest(".target")
.closest(selector)
方法将找到与选择器匹配的最近父级。使用类来解决此问题可以轻松设计,因为您不必使用唯一ID。
答案 1 :(得分:3)
.id是dom元素的属性,而您的代码是获取jquery对象。看这个例子。哦,请注意,如果您使用的是jQuery 1.7+,那么您可能希望使用prop
而不是attr
$('#foo').prop('id'); //foo
$('#foo').id; //undefined
$('#foo').get(0).id; //foo
如果可能的话,我会尝试定义类来表示你的四元父元素。然后你可以做类似
的事情$(this).parents('.class');
请注意父母使用's'
答案 2 :(得分:0)
$(this).parent().parent().parent().parent()
可以写成:
$(this).parents().eq(3)
或:
$(this).parents(':eq(3)')