我有疑问:
这是一个很好的做法,找到一个比匹配元素高两级的父级。 html结构如下所示:
<div class="cli_visitas left cli_bar hand" title="Control de las visitas del cliente">
<a href="/fidelizacion/visitas/nueva/id/<?php echo $cliente->getId();?>">
<span id="cli_visitas<?php echo $cliente->getId();?>" class="cli_bar_msg">La última visita <span class="lastvisit" ><?php echo $this->estados()->getUltimaVisita($cliente->getId());?></span></span>
</a>
</div>
'。lastvisit'触发事件,我想得到父母'.cli_visitas'div 我这样做:
$(this).parent().parent().parent().css({boxShadow : '0px 0px 5px #DF0101',backgroundColor:'#F89494'});
这是一个好习惯吗?我不想使用.parents()方法并迭代每个元素并找到我想直接访问它的父级。 我尝试过.get(),但我认为这种方法对我的老板来说并不好 还有其他办法吗?
非常感谢你。 问候。
答案 0 :(得分:4)
您可以使用以下两种选择来实现此目的。
<强>一强>
$(this).closest('div.cli_visitas')
<强>第二强>
$(this).parents('div.cli_visitas')
$(this).parents('div.cli_visitas').eq(1)
在Franc的评论中添加了Cool解释
作为一个额外的注释,为了OP的好处,关于那些不同的
.closest()
将如何获得匹配选择器的第一个元素遍历DOM树中的祖先。一旦找到匹配.parents()
,它将立即停止将获得与指定选择器匹配的所有祖先,或者如果未指定选择器则将所有父祖先匹配。因此,如果您有一个非常大的嵌套DOM树,closest()
将更有效。当然,如果您需要访问匹配parents().eq()
中的n-ancestor可能更合适。
答案 1 :(得分:2)
如何使用:
$(this).closest('.cli_visitas').css(...
答案 2 :(得分:1)
为什么不想使用.parents()
?您可以使用eq()
:
$(this).parents().eq(1);
答案 3 :(得分:0)
您应该使用jQuery.parents()方法。这将使您不仅可以获得直接父级,还可以获得DOM树之外的祖先。
$(this).parents('DIV.cli_visitas').css({boxShadow : '0px 0px 5px #DF0101',backgroundColor:'#F89494'});