2010-11-19 10 views
8

Ich habe den folgenden Code:JQuery alle Elemente wählen Text in ID enthält

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

Was würde ich ändern, tun die oben so wähle ich alle Elemente, deren ID enthalten ‚aggr‘.

Vielen Dank, Nav

+1

IDs sollten eindeutig sein. Bitte klären Sie, ob Sie alle Elemente meinen, die * aggr als ID haben oder * in der ID * aggr enthalten. Wenn Sie mehr Elemente mit derselben ID haben, tun Sie etwas falsch. –

+1

er hat IDs wie 'aggr1', 'aggr2', etc und möchte all diese auswählen –

+0

@Scott Evernden: Ja, ich hätte den Titel lesen sollen;) @nav: Nevermind. –

Antwort

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

einfachste Weg, das zu erreichen ist

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

Wenn durch "alle Elemente" Sie bedeuten alle DOM-Elemente natürlich.

1

Alle oben genannten Antworten funktionieren in gewissem Umfang, aber Ihr Snippet schlägt vor, dass jedes der ausgewählten Elemente einzeln aktualisiert werden soll. Der Code in den anderen Antworten setzt jeden von ihnen auf den gleichen Wert wie der erste.

Sie müssen die Callback-Signatur von .html() verwenden:

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

Dies wird jedes b Element aktualisieren individuell.

Noch ein Ratschlag: Setzen Sie IDs oder Klassen auf Elemente, die sich tiefer im DOM befinden. Dies würde Ihre Auswahl erheblich vereinfachen und die Ausführung und das Schreiben Ihres Codes beschleunigen. In diesem Fall könnten Sie beispielsweise eine Klasse aggrchild auf Ihre niedrigsten td Elemente setzen und eine Auswahl wie $('td.aggrchild b') treffen.

Verwandte Themen