Как выбрать в JQuery братьев и сестер, не переходя на более низкий уровень - PullRequest
0 голосов
/ 20 марта 2012

Как я могу получить братьев и сестер отдельного элемента (в этом случае элемент PLACEHOLDER), не углубляясь в структуру?Я пробовал $ ("# PLACEHOLDER"). Siblings (), но это тоже дает мне элементы C и D li.Мне нужен способ получить только братьев и сестер точно на этом уровне (здесь A, B и E).

<section id="root">
    <ol class="sortable">
        <li id="A"><div>A</div></li>
        <li id="B"><div>B</div>
            <ol>
                <li id="C"><div>C</div></li>
                <li id="D"><div>D</div></li>
            </ol>
        </li>
        <li id="E"><div>E</div></li>
        <li id="PLACEHOLDER"><div>PLACEHOLDER</div></li>
    </ol>
</section>

Ответы [ 3 ]

0 голосов
/ 20 марта 2012

$('#PLACEHOLDER').siblings() работает отлично и получает только A, B и E, как Алекс указал, его цвет фона родительского взгляда здесь.

http://jsfiddle.net/d4udts/W9cCE/1/

Если вы хотите выбрать родного брата над заполнителем, вы можете сделать это

$('#PLACEHOLDER').prev();

http://jsfiddle.net/d4udts/W9cCE/2/

Это дает вамтолько один предыдущий брат и если вы хотите, чтобы все предыдущие братья и сестры вы можете использовать prevAll()

http://api.jquery.com/category/traversing/

0 голосов
/ 20 марта 2012

попробуйте это.

http://jsfiddle.net/5aFHQ/11/

.text() функция возвращает весь текст внутри селектора, поэтому ваш код возвращает также C и D. Получите дочерний элемент селектора и после этого вызова .text()

0 голосов
/ 20 марта 2012

Если вы выберете $('#PLACEHOLDER').siblings().andSelf(), это даст вам только #A, #B и #E и #PLACEHOLDER.

jsFiddle .

Причина, по которой ваш siblings() вызов мог получить элементы #C и #D, заключается в том, что, возможно, ваш базовый селектор был .sortable li, когда он должен был быть .sortable > li.

...