2010-11-19 9 views
8

je le code suivant:Jquery sélectionner tous les éléments contenant du texte ID

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

Ce que je voudrais faire est alter ci-dessus, donc je sélectionner tous les éléments dont id contiennent 'agr.

Merci beaucoup, Nav

+1

Les identifiants doivent être uniques. Veuillez préciser si vous voulez dire tous les éléments qui ont * aggr comme ID ou qui contiennent * aggr dans l'ID. Si vous avez plus d'éléments avec le même ID, vous faites quelque chose de mal. –

+1

il a ID comme 'aggr1', 'aggr2', etc et veut tout sélectionner –

+0

@Scott Evernden: Oui, j'aurais dû lire le titre;) @nav: Nevermind. –

Répondre

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

manière la plus simple d'y arriver est

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

Si par "tous les éléments" signifient tous les éléments DOM bien sûr.

1

Toutes les réponses ci-dessus fonctionneront dans une certaine mesure, mais votre extrait suggère que vous souhaitiez que chaque élément sélectionné soit mis à jour individuellement. Le code dans les autres réponses placera chacun d'entre eux à la même valeur que le premier.

Vous devez utiliser la fonction de rappel de .html():

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

Cela mettra à jour chaque élément b individuellement.

Encore un conseil: placez des identifiants ou des classes sur les éléments situés plus bas dans le DOM. Cela simplifierait considérablement votre sélection, accélérant l'exécution et l'écriture de votre code. Dans ce cas, par exemple, vous pouvez mettre une classe aggrchild sur vos éléments td les plus bas et faire une sélection comme $('td.aggrchild b').