6

ajax呼び出しから返された配列から次のリストを作成したいと思います。

<ul id="list">
  <li><input type="checkbox" name="rss" value="231" />bla</li>
  <li><input type="checkbox" name="rss" value="321" checked="checked" />ble</li>
  <li><input type="checkbox" name="rss" value="431" />abc</li>
</ul>

次の両方が機能します(微調整が必​​要な場合がありますが、近いです。一方の方法が他方よりも優先されますか?全体としてより良い方法はありますか?ありがとうございます

var l=$("#list");
l.html('');
$(data).each(function(){
  l.append('<li><input type="checkbox" name="rss" checked="'+((this.selected)?'checked':null)+'" value="'+this.id+'" />'+this.channel+'</li>');
  //Or
  l.append($("#rss-clone").clone(true).removeAttr('id').find('input').val(this.id).attr('checked',(this.selected)?'checked':null).parent().text(this.channel));
},'json');

//クローンソリューションにのみ必要:

<ul class="hidden"><li id="rss-clone"><input type="checkbox" name="rss" value="" />bla</li></ul>
    4

    1 に答える 1

    4

    参照:jQueryおよび動的要素とdisplaycss属性

    要点は、オンザフライで動的にドームを作成するとクライアントにオーバーヘッドが追加されるのに対し、既存のドームのクローン作成はクライアントでは高速ですが、事前にレンダリングしてダウンロードする必要があるというオーバーヘッドがあります。

    プロジェクトに応じて、どちらがより適しているかは、他よりも優れているものはありません。リクエストごとにダウンロードする追加のバイト数よりもクライアントのパフォーマンスを重視する場合は、たとえば、クローン作成方法を選択することをお勧めします。

    ただし、私が知る限り、クライアントのパフォーマンスはどの方法によっても深刻な影響を受けることはありません。クローン作成はこれまでになくわずかに高速ですが、要素を動的に作成することは決してひどく遅くはありません。あなたがこれらの何百も作成していない限り、選択は好みの問題、すなわちあなたにとって何がより良いと感じるかということに帰着するかもしれません。

    ただし、非常に異なる要素を多数作成する必要がない限り、マークアップがJSコードに埋め込まれていない場合は、後で要素のスタイルと変更を簡単に行えるという点で、クローン作成の方が便利です。

    于 2012-08-19T13:54:57.460 に答える