从jQuery中的匹配元素获取父级

时间:2013-04-30 11:14:42

标签: jquery

我有疑问:

这是一个很好的做法,找到一个比匹配元素高两级的父级。 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(),但我认为这种方法对我的老板来说并不好 还有其他办法吗?

非常感谢你。 问候。

4 个答案:

答案 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'});