如何使用jquery选择元素的所有先前兄弟元素?

时间:2016-09-02 12:47:15

标签: javascript jquery html siblings

假设我有一个包含下一个内容的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);

3 个答案:

答案 0 :(得分:5)

您可以使用.prevAll()选择所有以前的元素兄弟,并使用.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>

答案 1 :(得分:2)

如上所述,您可以使用add_filter( 'gform_notification', 'change_user_notification_attachments', 10, 3 ); function change_user_notification_attachments( $notification, $form, $entry ) { if ( $notification['name'] == 'User Notification' ) { $url = 'http://yoursite.com/path/to/file.pdf'; $notification['attachments'] = array( $url ); } return $notification; } ,但您还需要.prevAll()来实现您的目标:

.addBack()

答案 2 :(得分:1)

这应该有效:

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