0

次のコードがあります。

var data = "<div><p class='a'>Text</p></div>";
$(data).find(".a").each(function(){
    $(this).addClass("b");
})

console.log(data);   //will output: <div><p class='a'>Text</p></div> 
                     //instead of <div><p class='a b'>Text</p></div>

jQuery オブジェクトを繰り返し処理していて$(data)、 child のクラスを変更してい<p />ます。ただし、変更後にデータを出力すると、クラス.bがなくなります。

なぜそうなのか、どうすればこれを機能させることができますか?

4

4 に答える 4

2

DOM 要素の作成結果を保存する必要があります。文字列自体が変更されることはありません。

var data = "<div><p class='a'>Text</p></div>";

// Create the elements from the markup
var elems = $(data);

// Modify the elements
elems.find(".a").each(function(){
    $(this).addClass("b");
});

// Append the elements to the DOM
elems.appendTo("body");

実際にコードを次のように短縮できます。

$(data).appendTo("body").find(".a").addClass("b");
于 2013-04-22T16:30:08.607 に答える