我已经搜索过类似的问题,但没有人回答我的问题。 (所有这些问题似乎都与拼写错误有关)
我做这个只是为了好玩。我正在使用基于 json 数据的 jquery 创建一个表。问题是,附加的表格行不继承任何 CSS 规则。我觉得我以前读过有关此问题的原因,特别是表格,但我没有找到这些信息。
HTML:
<table width="100%" class="" id="mytable">
<thead>
</thead>
<tbody>
<tr><td>f</td><td></td><td></td><td></td></tr>
<tr><td>b</td><td></td><td></td><td></td></tr>
<tr><td>a</td><td></td><td></td><td></td></tr>
</tbody>
</table>
CSS:
tr:nth-child(even){background:blue}
tr:nth-child(odd){background:green}
JS:
// Build some test data
var data = [];
var cols = ['Col-A','Col-B','Col-C','Col-D'];
for (i=0;i<10;i++){
data.push(['A_'+i,'B_'+i,'C_'+i,'D_'+i]);
}
// data that would be sent to
var json = JSON.stringify({columns:cols, data:data});
// build the table
$('#mytable').tables(json);
});
// the magic function
jQuery.fn.tables = function(json) {
var obj = JSON.parse(json);
var head = this.find('thead');
var bod = this.find('tbody');
// Build columns
head.append('<tr>');
for (i=0;i<obj.columns.length;i++){
head.append('<th>'+obj.columns[i]+'</th>');
}
head.append('</tr>');
// Add row data
for (i=0;i<obj.data.length;i++){
bod.append('<tr>');
for(j=0;j<obj.data[i].length;j++){
bod.append('<td>'+obj.data[i][j]+'</td>');
}
bod.append('</tr>');
}
return this;
}
最佳答案
使用此代码,您不会一次追加一整行,而只会追加片段。您希望呈现什么?
head.append('<tr>');
...
head.append('</tr>');
要让它工作,你的魔法函数应该是这样的:
// the magic function
jQuery.fn.tables = function(json) {
var obj = JSON.parse(json);
var head = this.find('thead');
var bod = this.find('tbody');
// Build columns
var row = '<tr>';
for (i=0;i<obj.columns.length;i++){
row += '<th>'+obj.columns[i]+'</th>';
}
row += '</tr>';
head.append(row); // append the full row
// Add row data
row = '';
for (i=0;i<obj.data.length;i++){
row += '<tr>';
for(j=0;j<obj.data[i].length;j++){
row += '<td>'+obj.data[i][j]+'</td>';
}
row += '</tr>';
}
bod.append(row); // append the full row
return this;
}
一次追加一整行的函数。
关于jquery - CSS 规则不适用于从 jquery 附加的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58983159/