2010-11-19 21 views
8

内のテキストを含むすべての要素を選択します。jQueryの私は、次のコード持っている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); 

私がやりたい何をので、私はそのIDが「AGGR」を含むすべての要素を選択し、上記の変更です。 "すべての要素" によって、あなたはもちろんのすべてのDOM要素を意味する場合

多くのおかげで、 ナビ

+1

IDは一意である必要があります。 * 'aggr'をIDとして持つか、* IDに* aggrを含むすべての要素を意味するのかを明確にしてください。同じIDを持つ要素がさらに多い場合は、何か間違っています。 –

+1

彼は 'aggr1'、 'aggr2'などのIDを持っていて、それらのすべてを選択したいと思っています –

+0

@Scott Evernden:タイトルを読んでいたはずですね)@nav:Nevermind。 –

答えて

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
はそれを達成するための

最も簡単な方法は、

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

です。

1

上記のすべての答えは、エクステントに動作しますが、あなたのスニペットは、個別に更新されるように選択された要素のそれぞれを望んでいることを示唆しています。他の回答のコードは、それぞれの回答を最初の回答と同じ値に設定します。

あなたは.html()のコールバック署名を使用する必要があります。

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

これは、個別に各b要素を更新します。

もう1つのアドバイス:DOMの下にある要素にIDまたはクラスを配置します。これにより、選択を大幅に簡素化し、コードの実行と記述を高速化します。この場合、例えば、クラスaggrchildを最低のtd要素に置き、$('td.aggrchild b')のような選択を行うことができます。

関連する問題