如何为每组元素运行jQuery方法

时间:2011-07-25 07:22:53

标签: jquery html plugins loops

所以我有这个列表在列表中的所有项目上使用相同的类名。我有一个jQuery插件,可以找到最高的元素,并使所有列表项的高度等于最高。

我想要做的是我想为每个UL组运行该方法。我的意思是,现在jQuery正在选择所有LI元素,即使它们在其他列表中并且使它们与最高的元素完全相同。我只希望列表项与列表中最高的元素一样高,而不是在其他列表中。

这就是我称之为它的方式,它起作用,但不是我要问的方式。

$j('.list-item').equalHeights(200); //minimum is 200px

我试过了,但结果相同:

$j('.lists').find('li').equalHeights(200);

我不确定是否必须遍历每个UL然后以这种方式运行方法?

HTML:

<ul class="lists">
    <li class="list-item">item</li>
    <li class="list-item">item</li>
    <li class="list-item">item</li>
    <li class="list-item">item</li>
</ul>
<ul class="lists">
    <li class="list-item">item</li>
    <li class="list-item">item</li>
    <li class="list-item">item</li>
    <li class="list-item">item</li>
</ul>
<ul class="lists">
    <li class="list-item">item</li>
    <li class="list-item">item</li>
    <li class="list-item">item</li>
    <li class="list-item">item</li>
</ul>

2 个答案:

答案 0 :(得分:6)

是的,你想要循环:

$j('.lists').each(function() {
    $j(this).find('li').equalHeights(200);
});

您的$j('.lists').find('li').equalHeights(200);已关闭,但它会在列表的所有下找到所有li个元素,并返回包含所有这些元素的单个jQuery实例(所以,仍然整套)。上面的过程都是单独列出的。

答案 1 :(得分:0)

循环是最简单的方法,就像我一样。

但是,如果您需要指令$j('.list-item').equalHeights(200);按预期工作,您可能需要编写自己的equalHeights方法模拟,以首先构建所有li s的组的集合在一个ul内,然后分别为每个组运行高度等于逻辑。因此,您将在一个方法中拥有所有逻辑,这在您的情况下可能是更好的选择。