代码之家  ›  专栏  ›  技术社区  ›  van

Jquery选择ID中包含文本的所有元素

  •  8
  • van  · 技术社区  · 15 年前

    我有以下代码:

     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”的所有元素。

    非常感谢, 导航

    3 回复  |  直到 15 年前
        1
  •  13
  •   Scott Evernden    15 年前
    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);
    
        2
  •  8
  •   Flipke    15 年前

    最简单的方法是

    var aggrHTML = $("[id*=aggr]");
    var aggrText = aggrHTML.text();
               var newText = "Total" + aggrText.substring(3);
               aggrHTML.html(newText);
    

    如果“all elements”是指所有的DOM元素。

        3
  •  1
  •   lonesomeday    15 年前

    以上所有答案都会在一定程度上起作用,但您的代码片段表明您希望所选的每个元素都单独更新。其他答案中的代码会将每个答案设置为与第一个答案相同的值。

    您需要使用的回调签名 .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') .