0

そのようないくつかのdivがあると想像してください

<div class="row chapter" node="1">Chapter 1</div>
<div class="row section" node="1">Section 1</div>

Ajax は、削除する必要があるノードの配列を受け入れます。これについていくつか質問がありました

1)次の機能を使用しています

                $.each(result['nodes'], function(column, node)){
                   $(".row."+column).slideUp("slow").remove();
                }

2つのクラスとノード属性で削除する方法がわかりません。どうやってするか?

2)AFAIK $.each関数は1つずつ削除します。一括削除は可能ですか?3) 検証の問題にどう対処するか? つまり、

4

2 に答える 2

0

配列を使用してセレクターを収集し、それらを結合して、一度にすべて削除を使用できます。

var toRemove = [];

$.each(result['nodes'], function(index, value){
    toRemove.push('.row.'+index+'[node='+value+']');
}

//$('.row.chapter[node=1], .row.section[node=1]')
$(toRemove.join(',')).slideUp("slow",function(){
    $(this).remove()
});
于 2012-05-03T08:30:10.417 に答える
0

オブジェクトにはキーと値のペアしかないため、2 つのクラスと 1 つの属性を処理するには、JSON の構造を変更する必要があります。[{"class1":"foo","class2":"bar","node":1}] に変更することをお勧めします。その形式では、これはノードを収集するために機能します。

$($.map(result['nodes'], function(o) {
    return "."+o.class1+"."+o.class2+"[node="+o.node+"]";
}).join(","))

remove()ジョセフが述べたように、元のコードではすぐにノードが削除されるため、次のパラメーターにを配置する必要がありますslideUp()

$($.map(result['nodes'], function(o) {
    return "."+o.class1+"."+o.class2+"[node="+o.node+"]";
}).join(",")).slideUp("slow", function() {
    $(this).remove()
});

サンプル jsFiddle: http://jsfiddle.net/tSu8z/

実際には「1 つずつ」と「一度に」の区別はないことに注意してください。上記のコードでは、jQuery はノードを一度に上にスライドさせる順序を取得しますが、内部的にはノードを反復処理します。同様に、すべてのノードが同時に削除されたように見える可能性が高いですが、jQuery は実際にはそれらを繰り返し処理しています。同時に見えるための唯一の要件は、slideUp非同期であることです。

于 2012-05-22T04:55:06.443 に答える