在动态表上,更改类并替换值

时间:2014-12-20 00:56:56

标签: jquery

我想知道为什么我不能这样做:

    var table = '<table>';
for (var i=0; i<15; i++) {
  table += '<tr>';
  table += '<td>one</td>';
  table += '<td>two</td>';
  table += '<td>three</td>';
  table += '<td>four</td>';
  table += '<td>five</td>';
  table += '<td>six</td>';
  table += '<td>seven</td>';
  table += '<td>eight</td>';
  table += '</tr>';
}
table += '</table>';

var aaa = $(table).find('tr:first td').addClass('firstrow');
var sss = aaa.replace(/one/g, 'zzz');

$('#output').html(sss);

我似乎无法将两者组合在一行中,但我可以执行查找和添加类或替换,但不能同时执行。救命。 JSFIDDLE

2 个答案:

答案 0 :(得分:1)

问题是aaa是一个jQuery对象,没有.replace()方法。根据我的评论,您可以按如下方式重新排列两行:

var table = '<table>';
for (var i=0; i<15; i++) {
  table += '<tr>';
  table += '<td>one</td>';
  table += '<td>two</td>';
  table += '<td>three</td>';
  table += '<td>four</td>';
  table += '<td>five</td>';
  table += '<td>six</td>';
  table += '<td>seven</td>';
  table += '<td>eight</td>';
  table += '</tr>';
}
table += '</table>';

var sss = table.replace(/one/g, 'zzz');

$('#output').html(sss).find('tr:first td').addClass('firstrow');

编辑:更改了代码,以便将所有15行追加到#output

答案 1 :(得分:1)

原因是$(table)返回包含DOM元素的jQuery对象,而不是HTML文本,并且此对象放在aaa中。 .replace()必须应用于字符串,它不适用于jQuery对象。

您可以使用jQuery .text()方法替换元素中的文本:

aaa.find("td:contains(one)").text(function(i, oldtext) {
    return oldtext.replace(/one/g, 'zzz');
});

$("#output").html(aaa);