Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 重复/克隆a<;tr>;元素使用jQuery';s clone()函数_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 重复/克隆a<;tr>;元素使用jQuery';s clone()函数

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=

我试图克隆的模板将填充数据,然后插入到表中。我目前可以对同一页面上的其他元素使用相同的.clone()函数,但jQuery拒绝查看和克隆模板(我猜是因为它不是块元素)

以下是模板:

<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>