我有以下代码:
var aggrHTML = $('TBODY#aggr > tr > td > table > tbody > tr > td > nobr > b');
var aggrText = aggrHTML.text();
var newText = "Total" + aggrText.substring(3);
aggrHTML.html(newText);
我想做的是改变上面的内容,所以选择id为'aggr'的所有元素。
非常感谢, NAV
答案 0 :(得分:13)
var aggrHTML = $('TBODY[id*=aggr] > tr > td > table > tbody > tr > td > nobr > b');
var aggrText = aggrHTML.text();
var newText = "Total" + aggrText.substring(3);
aggrHTML.html(newText);
答案 1 :(得分:8)
实现这一目标的最简单方法是
var aggrHTML = $("[id*=aggr]");
var aggrText = aggrHTML.text();
var newText = "Total" + aggrText.substring(3);
aggrHTML.html(newText);
如果“所有元素”都指当然是所有DOM元素。
答案 2 :(得分:1)
以上所有答案都会在一定程度上起作用,但您的代码段表明您希望单独更新所选的每个元素。其他答案中的代码将每个答案中的代码设置为与第一个代码相同的值。
您需要使用.html()
的回调签名:
$('TBODY[id*=aggr] > tr > td > table > tbody > tr > td > nobr > b').html(
function(idx, oldHTML) {
return 'Total' + oldHTML.substring(3);
}
);
这将分别更新每个b
元素。
还有一条建议:将ID或类放在DOM下方的元素上。这将显着简化您的选择,加快代码的执行和编写速度。例如,在这种情况下,您可以在最低aggrchild
元素上放置一个td
类,并执行$('td.aggrchild b')
之类的选择。