2011-06-13 143 views
0

我有一个关于循环内克隆的问题,实际上有两个问题,我只是试图找到最好的方法,下面是我的代码。循环内的jquery克隆?

$.each(data.customers,function(key, value){ 
    $('.customer').find('label').eq(0).text(value.name); 
    $('.customer').eq(0).clone().appendTo('#customers'); 
}); 

data.customers是json格式,所以我不能对它做一个.length。我的问题是,无论如何,jQuery总会在#customers的末尾附加一个克隆元素。如果他们是json集合中的另一个,我只需要追加。我能想到的唯一方法是将数组的计数返回为json,并检查密钥是否与它相等,这似乎是荒谬的。在处理循环时克隆元素的最佳方式是什么?

任何人都可以帮忙。

+0

* “另外一个” *?这是否意味着你的'data.customers'包含的客户比你想追加的客户多? (另外,显示数据的外观) – Tomalak 2011-06-13 10:25:00

+0

没有它有适量的客户,但我只想克隆它们是否是另一个克隆的循环。当它完成循环时,它们将永远是一个额外克隆的.customer,其中包含第一个.customer名称的克隆 – Ian 2011-06-13 10:30:31

回答

1

你可以这样做:

首先,在你的HTML为客户创造一个特定的“克隆模板”,使通过CSS(.template {display: none;})无形。

然后,在你的循环:

$.each(data.customers, function (key, value) { 
    var $newCustomer = $('#customers .customer.template').clone(); 

    $newCustomer.removeClass("template").find('label:first').text(value.name); 
    $('#customers').append($newCustomer); 
}); 
+0

我实际上并不需要我需要的模板类来移动克隆并将其存储在变量中,以便您代码指出我在正确的地方反正,谢谢 – Ian 2011-06-13 11:15:25

+0

其实我做了,谢谢代码的作品 – Ian 2011-06-13 11:20:21