td's在不使用html的情况下使用jquery创建表
td's in table creating with jquery without html
这是我的jsfiddle作品。我在生成没有任何html的表时遇到了一些问题。我有一个json对象,我需要它来itterate并将键和值放入表中,如:
<tr> <td> key </td> <td> key </td> ... </tr>
<tr> <td> val </td> <td> val </td> ... </tr>
我首先尝试生成这样的表,但接下来我想使用jquery版本来创建td
和tr
,但所有键和值都只附加在一个td
中,实际上这不是我想要的。
您必须在第一次设置表的head
时循环通过键,然后在each
内创建行,并将每一行都附加到表中,以创建表的body
,请查看下面的示例代码:
$.ajax({
type : "POST",
dataType : "json",
url : '/echo/json/',
data : { json: JSON.stringify( jsonData ) },
success : function(data){
var jsn = $(data.markers);
//First time append table head
if(!header)
{
var row = $('<tr></tr>');
for(key in jsn[0])
{
row.append('<th>'+key+'</th>');
}
table.append(row);
header = true;
}
for ( var i = 0; i < jsn.length ; i++){
var row = $('<tr></tr>');
$.each(jsn[i], function(key,val)
{
row.append('<td>'+val+'</td>');
});
table.append(row);
}
}
});
看看工作小提琴。
希望这能有所帮助。
问题在col
和row
变量的范围内。您必须在循环中重新分配它们,或者重新声明。这是更新后的jsfiddle。顺便说一下,不需要使用for
循环。在jQuery中,对对象使用$.each
函数就足够了。
从这里,您可以看到如何创建表结构,并用所需的实际数据替换key
和val
。
您需要在每次for
迭代中创建新行对象:
for (var mrksIndex = 0, mrksLength = jsn.length; mrksIndex <= mrksLength; ++mrksIndex) {
row = $("<tr/>");
$.each(jsn[mrksIndex], function (key, val) {
col = $("<td/>");
col.append(key);
row.append(col);
table.append(row);
});
}
演示:https://jsfiddle.net/6dw2u8uz/15/
相关文章:
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 在不使用jquery的情况下查找页面中的所有锚点并附加函数
- 在不设置协议的情况下,使用javascript/jquery更改iframe-src
- jQuery悬停在没有鼠标悬停的情况下启动
- 有没有一种方法可以在没有文档或jQuery的情况下使用javascript解码html实体
- 在Widget代码中没有jQuery的情况下,用光标图像从左滑动到右
- 我如何让jQuery使用Greasemonkey 0.8脚本(在Firefox 2上),在没有互联网的情况下使用PC
- 在iframe的情况下,jQuery html()将失败
- 在我的情况下,使用带有变量失败的 jquery 选择器
- 为什么jQuery代码段在没有IFrame的情况下可以工作,而在有IFrame时却不能工作
- 如何在没有jquery的情况下使用Papa Parse
- 如何在不删除类似侦听器的情况下从父对象中删除jQuery事件侦听器
- 为什么jQuery悬停方法在这种情况下不起作用
- 如何在不链接/jquery的情况下使用方法应用css属性数组
- jQuery-如何在给定延迟的情况下从元素中删除类
- 为什么在这种情况下要向JQuery添加两个链接
- jQuery:如何在没有for循环的情况下将事件处理程序应用于$('#text'+'任意整数
- 在没有事件的情况下使用.jquery.on()
- 如何在不提交表单的情况下使用jQuery.validate
- 为什么attr()有效而text()无效't在同样的情况下?jQuery