用数组中的相应元素替换元素

时间:2019-11-11 13:20:03

标签: jquery ajax

我需要使用新刷新的div将.status类的div替换为新的div,而无需触及其他任何元素。我使用ajax调用的响应数据来获取新的div。

<div class="wrap">
    <div class="item-23">
        <div class="title">
        ...
        <div class="status">
        ...
    </div>
    <div class="item-451">
        <div class="title">
        ...
        <div class="status">
        ...
    </div>
    <div class="item-3">
        <div class="title">
        ...
        <div class="status">
        ...
    </div>
</div>

这是我到目前为止所拥有的。我可以像这样用新的div获取数组:

function( response_data ) {
    var $html      = $.parseHTML( response_data );
    var $new_divs  = $( '.status', $html ); // refreshed divs are now in array
}

但是我不知道如何以我需要的方式用新的替换旧的。

我确实尝试过$( '.status' ).replaceWith( $new_divs );,但这将所有旧div替换为所有新div的副本。不是我想要的。

如何仅用对应的新div替换每个旧的div.status

1 个答案:

答案 0 :(得分:0)

好吧,我实际上设法提出了一个可行的解决方案。

仅在目标节点列表上使用.each循环的当前索引就足够了。这是最终代码,以防有人遇到类似问题。

function( response_data ) {
    var $html      = $.parseHTML( response_data );
    var $new_divs  = $( '.status', $html );
    var $old_divs  = $( '.status' );

    $.each( $new_divs, function( i ) {
        $( $old_divs ).eq( i ).replaceWith( this );
    });
}