首页 > 解决方案 > 用数组中的对应元素替换元素

问题描述

我需要.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.status仅用相应的新 div 替换每个旧 div?

标签: jqueryajax

解决方案


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

仅在目标节点列表上使用 .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 );
    });
}

推荐阅读