使用jQuery选择器选取所有ID中包含特定文本的元素

9
我有以下代码:

 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

1
ID 应该是唯一的。请澄清您是指所有具有 aggr 作为 ID 的元素还是包含 aggr 在 ID 中的元素。如果您有更多具有相同 ID 的元素,则表示您正在做错误的事情。 - Felix Kling
1
他有像'aggr1','aggr2'等ID,并希望选择所有这些。 - Scott Evernden
@Scott Evernden:是的,我应该读标题的;) @nav:没事。 - Felix Kling
3个回答

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

9
最简单的方法是:
var aggrHTML = $("[id*=aggr]");
var aggrText = aggrHTML.text();
           var newText = "Total" + aggrText.substring(3);
           aggrHTML.html(newText);

如果你所说的“所有元素”是指所有DOM元素,那么是的。

1

所有上述答案在一定程度上都可以起作用,但你的代码片段表明你希望每个选择的元素都能被单独更新。其他答案中的代码将把它们都设置为第一个元素相同的值。

你需要使用 .html() 的回调函数签名:

$('TBODY[id*=aggr] > tr > td > table > tbody > tr > td > nobr > b').html(
    function(idx, oldHTML) {
        return 'Total' + oldHTML.substring(3);
    }
);

这将单独更新每个b元素。

另一个建议:在DOM下面的元素上放置id或类。这将显着简化您的选择,加快代码的执行和编写速度。例如,在这种情况下,您可以在最低的td元素上放置一个类aggrchild,并进行如下选择:$('td.aggrchild b')


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接