我有以下HTML
<div class="myclass" value="1">
<div>
<div class="myclass" value="">
<a class="popup" id="12" target="_blank" href="xxx">popup</a>
</div>
</div>
</div>
我在弹出类上使用jQuery和click事件,我试图通过类“myclass”得到祖父div的值,该示例中的值为“1”。我试过这个,但它让我'未定义'
$('.popup').click(function(){
alert($(this).parent('.myclass').parent('.myclass').attr('value')
});
答案 0 :(得分:4)
它是一个不平衡的括号问题。
您需要关闭提醒);
或使用closest
代替parent
:
alert($(this).closest('.myclass').closest('.myclass').attr('value'));
答案 1 :(得分:2)
我会使用parents
代替parent
。 parent
仅查看直接父级,并且由于两个.myclass div之间有<div>
,因此选择器失败。
$('.popup').click(function(){
var val = $(this).parents('.myclass').parents('.myclass').attr('value');
alert(val);
});
因此,在您的示例中,第二个parent
失败,因为选择器不匹配,因为parent
仅查看直接父级。来自parent
documentation:
.parents()和.parent()方法类似,只是后者只在DOM树中向上移动一层。
您也可以将选择器简化为:
var val = $(this).parent().parents('.myclass').attr('value');
可以找到一个工作示例here on jsFiddle。
答案 2 :(得分:0)
这个怎么样?
$('.popup').click(function(e){
alert($(this).parents('.myclass').last().attr('value')
});
答案 3 :(得分:0)
在我的情况下,此页面上的所有代码都不起作用。 但这项工作! var result = $(this).closest('。news')。attr('index');