如何使用 jquery select 元素的所有先前兄弟姐妹?

How to select all previous siblings of element using jquery?

假设我有一个 div 下一个内容:

<div id="divOne">
    <p>one</p>
    <p>two</p>
    <div id="aggregatedDiv"></div>
    <p> three </p>
</div>

那么有没有办法去掉前三个元素呢?我不知道元素的数量。我只想删除 id="aggregatedDiv" 之前的所有内容,包括它。

我必须将结果作为 html 附加到其他 div。

$("#otherDiv").append(resultOfSlicedDivOneHtml);

您可以使用 .prevAll() to selecting all previous sibling of element and use .addBack() 将上一个选择器 (#aggregatedDiv) 添加到当前选定元素集。

$("#aggregatedDiv").prevAll().addBack().css("color", "red");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="divOne">
    <p>one</p>
    <p>two</p>
    <div id="aggregatedDiv">#</div>
    <p> three </p>
</div>

如果要将所选元素添加到另一个元素,请使用底部示例:

$("#aggregatedDiv").prevAll().addBack().appendTo("#divTwo");
#divTwo {color: red;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="divOne">
    <p>one</p>
    <p>two</p>
    <div id="aggregatedDiv">#</div>
    <p> three </p>
</div>
<div id="divTwo"></div>

这应该有效:

var elements = $("#aggregatedDiv").prevAll(); //gets everything before aggregatedDiv
elements = elements.add($("#aggregatedDiv")); //we want aggregatedDiv in the collection as well
$("#otherDiv").append(elements); //move them all into the other div

如上所述,您可以使用 .prevAll(),但您还需要 .addBack() 来实现您想要的:

$("#otherDiv").append($("#aggregatedDiv").prevAll().addBack());