jquery中.id和.attr('id')之间的区别是什么

时间:2011-12-04 04:44:03

标签: jquery element this identity attr

var x = $(this).parent().parent().parent().parent();

x.id向我undefined,而x.attr('id')返回正确的ID。

谁能告诉我这两者之间的区别。 顺便说一下,有没有更好的方法来获取$(this).parent().parent().parent().parent(),我不想为它们分配ID,因为这会使得使用这些元素变得更加困难。

由于

3 个答案:

答案 0 :(得分:11)

x.idx是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)')