4

我有一个疑问:

这是找到比匹配元素高两个级别的父级的好习惯吗?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

4 回答 4

4

您可以使用以下两种方法来做到这一点。

$(this).closest('div.cli_visitas')

第二

$(this).parents('div.cli_visitas')
$(this).parents('div.cli_visitas').eq(1)

法郎在评论中添加了很酷的解释

作为附加说明,为了 OP 的利益,关于它们的不同之处.closest()将获得与选择器匹配的第一个元素,该选择器在 DOM 树中向上遍历其祖先。一旦找到匹配项,它将立即停止,.parents()另一方面,将获取与指定选择器匹配的所有祖先,或者如果未指定选择器,则获取所有父祖先。因此如果你有一个非常大的嵌套 DOM 树,closest()效率会更高。当然,如果您需要在比赛中访问第 n 个祖先parents().eq()可能更合适。

于 2013-04-30T11:17:27.917 回答
2

如何使用:

 $(this).closest('.cli_visitas').css(...
于 2013-04-30T11:16:49.423 回答
1

你为什么不想使用.parents()?您可以使用以下链接进行此链接eq()

$(this).parents().eq(1);
于 2013-04-30T11:17:49.147 回答
0

您应该改用jQuery.parents()方法。这将使您不仅可以获取直接父级,还可以获取 DOM 树中的父级。

$(this).parents('DIV.cli_visitas').css({boxShadow : '0px 0px 5px #DF0101',backgroundColor:'#F89494'});
于 2013-04-30T11:19:13.360 回答