Javascript 重复/克隆a<;tr>;元素使用jQuery';s clone()函数
我试图克隆的模板将填充数据,然后插入到表中。我目前可以对同一页面上的其他元素使用相同的.clone()函数,但jQuery拒绝查看和克隆模板(我猜是因为它不是块元素) 以下是模板:Javascript 重复/克隆a<;tr>;元素使用jQuery';s clone()函数,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我试图克隆的模板将填充数据,然后插入到表中。我目前可以对同一页面上的其他元素使用相同的.clone()函数,但jQuery拒绝查看和克隆模板(我猜是因为它不是块元素) 以下是模板: <tr id="search_result_temp" class="template"> <td class="logo"> <img class="logo" /> </td> <td class="ratings"> <p id=
<tr id="search_result_temp" class="template">
<td class="logo">
<img class="logo" />
</td>
<td class="ratings">
<p id="rating"></p>
</td>
<td class="programs"></td>
<td class="actions">
<button id="request_info">Request Info</button>
<button id="save_school">Save</button>
</td>
<td class="compare"></td>
</tr>
谢谢
for(var index in results){
var result = results[index];
$result_listing = $("#search_result_temp").clone().removeClass('template').attr('id', result.key);
$search_results.append($result_listing);
}
如果我错了,请纠正我,但你为什么要这样做
var result = results[index];
索引已经是结果的单个元素了找到了答案。当模板
封装在
和
元素中时,clone()函数可以正常工作。如下所述。innerHTML(jQuery在clone()中使用)不适用于表片段。这意味着如果一个
是根元素(其父元素是
),jQuery将不会克隆它。因此,模板应该是这样的(当然在jQuery选择的
上有一个适当的id):
请求信息
拯救
或者,您可以将模板包装在隐藏的DIV中,并通过jQuery HTML方法访问内容。另一方面,您可能需要克隆多个具有相同ID的项目。请尝试使用类方法并添加标识符(尝试新的HMTL5数据-*标记属性)。不在javascript中,索引只是索引(标签)@Dr.Molle。。。别开玩笑了,它不像其他语言集合那样工作?真有趣。那么为什么不for(i=0;在javascript中,for循环遍历对象的“键”。因此索引指的是键而不是值。@drachenstern-这些循环具有相同的效果其实并不相同。使用for(i=0;例如:Array.prototype.foo='bar';var arr=[1,2,3];for(var k in arr){alert(k);}
你不应该使用for…in
循环来迭代数组。@尼克·克雷弗-使用for..in来迭代数组完全可以。@Justin-模板是文档树的一部分吗?@Justin-你的模板行是在一个表中,还是自己坐着?@Lucho-不是,现在有很多理由这样做:如果你想这样做的话要知道为什么必须这样做,这是由于浏览器在使用.innerHTML
设置表片段时的限制
var result = results[index];
<div>
<table>
<tr id="search_result_temp" class="template">
<td class="logo">
<img class="logo" />
</td>
<td class="ratings">
<p id="rating"></p>
</td>
<td class="programs"></td>
<td class="actions">
<button id="request_info">Request Info</button>
<button id="save_school">Save</button>
</td>
<td class="compare"></td>
</tr>
</table>
</div>