【问题标题】:Generate unique id for each block in jQuery templating为 jQuery 模板中的每个块生成唯一的 id
【发布时间】:2011-07-05 16:29:15
【问题描述】:

我正在使用 jQuery tempalting (http://api.jquery.com/jquery.tmpl/) 为我通过 ajax 接收的 json 数据生成一组 DIV 标签。

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

我尝试了类似的东西

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

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

现在我通过执行 .each() 并通过在所有匹配的 div 标签上增加“i”来设置 id,这些标签分配了一个公共类,但我想一次性完成。

有什么想法吗?

【问题讨论】:

  • 好吧,我没有找到任何合适的答案,我将 id 作为 json 本身的一部分,并在调用 tmpl() 期间也设置了 id 属性,欢迎任何更好的解决方案......

标签: jquery templating jquery-templates


【解决方案1】:

我会采用另一种方式 - 在模板中生成一个 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。

【讨论】:

    【解决方案2】:
    var d = new Date();
    var i = d.getTime();
    

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

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

    【讨论】:

    • 好吧,如果你在循环中,它会生成一个随机id,并使其成为一个唯一的id,更可靠
    【解决方案3】:

    在您发布的示例中,您不能一口气完成。由于您的方法只会被调用一次,因此它的值只会增加一次。 .each 将是要走的路

    【讨论】:

      【解决方案4】:

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

      而 atts 使用提供的值在集合上循环,所以我不会像你期望的那样增加。

      【讨论】:

        猜你喜欢
        • 2020-06-21
        • 2015-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多