如何在没有较低级别的情况下选择jQuery兄弟姐妹

时间:2012-03-20 08:55:38

标签: jquery structure siblings

如何在不深入结构的情况下获得特定元素(在这种情况下为PLACEHOLDER元素)的兄弟姐妹? 我试过$(“#PLACEHOLDER”)。兄弟姐妹(),但这也让我得到了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 :(得分:0)

如果您选择$('#PLACEHOLDER').siblings().andSelf(),则它应该仅为您提供#A#B#E以及#PLACEHOLDER

jsFiddle

您的siblings()来电可能会让您获得#C#D元素的原因是因为您的基本选择器可能是.sortable li.sortable > li }}

答案 1 :(得分:0)

$('#PLACEHOLDER').siblings()效果很好,只得到A,B和E,因为Alex指出它只是父母的背景颜色看看这里。

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

如果要在占位符上方选择一个兄弟,可以执行此操作

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

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

它完全给你以前的兄弟姐妹,如果你想要所有以前的兄弟姐妹,你可以使用prevAll()

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

答案 2 :(得分:0)

试试这个。

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

.text()函数返回选择器内的所有文本,因此您的代码也返回C和D.获取选择器的children元素,然后调用.text()