1

我有以下 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,并且我正在尝试使用类“myclass”获取祖父 div 的值,该类在示例中的值为“1”。我试过这个,但它返回我'未定义'

$('.popup').click(function(){
    alert($(this).parent('.myclass').parent('.myclass').attr('value')
});
4

4 回答 4

4

这是一个不平衡的牙套问题。您需要关闭警报);或使用closest而不是parent

alert($(this).closest('.myclass').closest('.myclass').attr('value'));
于 2012-06-13T14:53:40.413 回答
2

我会使用parents而不是parent. parent只查看直接父级,并且由于您<div>在两个 .myclass div 之间有一个,因此选择器失败。

$('.popup').click(function(){
    var val = $(this).parents('.myclass').parents('.myclass').attr('value');
    alert(val);
});​

因此,在您的示例中,第二个parent失败是因为选择器不匹配,因为parent只查看直接父级。从parent文档中:

.parents() 和 .parent() 方法是相似的,只是后者只在 DOM 树上向上移动一层。

您也可以将选择器简化为:

var val = $(this).parent().parents('.myclass').attr('value');

可以在 jsFiddle上找到一个工作示例。

于 2012-06-13T14:58:49.337 回答
0

那这个呢?

$('.popup').click(function(e){
    alert($(this).parents('.myclass').last().attr('value')
});
于 2012-06-13T14:57:03.667 回答
0

就我而言,此页面上的所有代码均无效。但这项工作!var 结果 = $(this).closest('.news').attr('index');

于 2013-07-08T13:03:57.450 回答