Как запустить метод jQuery для каждой группы элементов - PullRequest
1 голос
/ 25 июля 2011

Итак, у меня есть этот список, который использует одно и то же имя класса для всех элементов в списке. У меня есть плагин 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 ]

6 голосов
/ 25 июля 2011

Да, вам нужно выполнить цикл:

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

Ваш $j('.lists').find('li').equalHeights(200); был близок, но он находит все элементы li в всех списках ивозвращает один экземпляр jQuery, содержащий все их (так что все еще целый набор).Вышеизложенное обрабатывает каждый список изолированно.

0 голосов
/ 25 июля 2011

Петля - самый простой способ сделать это, как для меня.

Однако, если вам нужна инструкция $j('.list-item').equalHeights(200); для правильной работы, вы можете написать собственный аналог метода equalHeights, чтобы сначала создать коллекцию групп всех li внутри одного ul и затем запустите логику выравнивания по высоте для каждой группы отдельно. Таким образом, вы будете иметь всю свою логику внутри одного метода, который, возможно, является лучшим вариантом в вашем случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...