Элементы JQery UL LI, $ .each для массива - PullRequest
1 голос
/ 04 февраля 2012

Не могу понять, что это не работает правильно.Попытка получить текст каждого button_select_sub li и поместить его в массив.Он создается для того, чтобы найти дочерние элементы #button_groupings такими, какие они есть, потому что функциональность, стоящая за ним, основана на том, что ниже будет несколько экземпляров HTML.Проблема, с которой я сталкиваюсь сейчас, заключается не в том, чтобы получать текст от каждого, а от того, что он помещает его в массив, делает массив всего одним элементом, а не несколькими.

$('#button_groupings').children('li').children('.button_select_sub').each(function(n,v){listArray.push($(this).text());})

HTML для него.

<div class="button_select_header_like_thing">
    <div class="button_select">
        <ul class="button_select_toggle" id="button_groupings">
            <li>
                <div class="button_select_text">Menu Text</div><div class="button_select_arrow">V</div>
                <div style="clear:both"></div>
            </li>
            <li>
                <ul class="button_select_sub" rel="hidden">
                    <li>Text</li>
                    <li>Text</li>
                    <li>Text</li>
                    <li>Text</li>
                </ul>       
            </li>
        </ul>
    </div>
</div>

1 Ответ

4 голосов
/ 04 февраля 2012

Есть ли у вас строка var listArray; где-нибудь в глобальной области видимости?Если нет, переменная, вероятно, будет рассматриваться как локальная переменная для этой анонимной функции.

Редактировать

Похоже, вам нужно пройти на один уровень глубже, прежде чем выполнятькаждый ().Вы делаете. Каждый наэлемент, вместо элемента li.

$('#button_groupings').children('li').children('.button_select_sub').children('li').each(function(n,v){listArray.push($(this).text());})

Вы также можете использовать этот немного более легкий для чтения синтаксис.

$('#button_groupings li .button_select_sub li').each(function(n,v){
    listArray.push($(this).text());
});
...