1

ajaxで受信したjsonデータに対してjQuerytempalting(http://api.jquery.com/jquery.tmpl/)を使用してDIVタグのセットを生成しています。

動的に生成されたdivに一意のIDを割り当てて、さらにアクションを実行したいと思います。

私は次のようなものを試しました

var i = 0;
$( "#myTemplate" ).tmpl( data ).attr('id',++i).appendTo( "#container" ); 

しかし、iの値は決して変わりませんでした。すべてのdivタグにid=0を割り当てました。

これで、.each()を実行し、共通のクラスが割り当てられているすべての一致するdivタグで「i」をインクリメントしてidを設定することで機能するようになりましたが、一度に実行したいと思いました。

何か案が?

4

4 に答える 4

2

私は別の方法で、テンプレート内で ID を生成します。たとえば、テンプレートは次のとおりです。

<script id="divTemplate" type="text/html">
    <div id='${getNextId()'}></div>
    <div id='${getNextId()'}></div>
</script>

<script type="text/javascript">
    var id = 1;
    function getNextId()
    {
        return ++id;
    }
</script>

そのメソッドはすべての div に対して呼び出され、新しい ID がインプレースで生成されます。

于 2011-05-05T00:17:04.453 に答える
1
var d = new Date();
var i = d.getTime();

inc ミリ秒なので、これはより良いオプションになると思います

また

$.each('/selector goes here/',function (i,n){
    $( "#myTemplate" ).tmpl( data ).attr('id',i).appendTo( "#container" ); 
});
于 2011-02-28T10:50:43.837 に答える
0

投稿した例では、一度に行うことはできません。メソッドは 1 回だけ呼び出されるため、その値は 1 回だけインクリメントされます。.each進むべき道だろう

于 2011-02-28T10:49:54.783 に答える
0

コレクション内の各アイテムに対して Attr が呼び出されるわけではありません。

むしろ、atts は指定された値をコレクションにループして使用するため、期待どおりに増加しません。

于 2011-02-28T10:50:25.397 に答える