在jQuery模板中为每个块生成唯一的id

时间:2011-02-28 10:46:54

标签: jquery templating jquery-templates

我正在使用jQuery tempalting(http://api.jquery.com/jquery.tmpl/)为json数据生成一组DIV标记,这些数据是我用ajax收到的。

我想将uniqe id分配给动态生成的div,以便对它们采取进一步的操作。

我试过像

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

但我的价值从未改变过。它为所有div标签分配了id = 0。

现在我通过做一个.each()并通过在所有匹配的div标签上递增'i'来设置id,这些标签有一个共同的类,但我想一次性完成。

有什么想法吗?

4 个答案:

答案 0 :(得分: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。

答案 1 :(得分:1)

var d = new Date();
var i = d.getTime();

我认为这可能是一个更好的选择,因为它的毫秒毫秒

OR

$.each('/selector goes here/',function (i,n){
    $( "#myTemplate" ).tmpl( data ).attr('id',i).appendTo( "#container" ); 
});

答案 2 :(得分:0)

在您发布的示例中,您无法一次性完成。由于您的方法只会被调用一次,因此它的值只会增加一次。 .each将是最佳选择

答案 3 :(得分:0)

不会为集合中的每个项目调用Attr。

而是atts使用提供的值循环遍历集合,因此我不会随着您的想法而增加。