2010-11-19 3 views
8

metni içeren tüm öğeleri seçin Aşağıdaki kod var:jQuery kimliği

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

Ne yapmak istiyorum yukarıdaki yüzden kimin kimliği 'AGGR' içeren tüm öğeleri seçin değiştirebilir olduğunu. Bunu başarmak için

Birçok sayesinde Nav

+1

Kimlikler benzersiz olmalıdır. Lütfen kimliğinizin * olarak "aggr" değerine sahip olup olmadığını veya * kimliğinde * "aggr" ifadesini içerdiğini belirtin. Aynı kimliğe sahip daha fazla öğeniz varsa, yanlış bir şeyler yapıyorsunuz demektir. –

+1

kimliğine 'aggr1', 'aggr2' vb. Sahiptir ve bunların tümünü seçmek istiyor –

+0

@Scott Evernden: Evet, başlığı okumalıydım;) @nav: Nevermind. –

cevap

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

En basit yol "tüm unsurları" elbette tüm DOM öğelerini anlama tarafından

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

Eğer olduğunu.

1

Yukarıdaki tüm yanıtlar bir dereceye kadar çalışır, ancak snippet'iniz seçilen öğelerin her birinin tek tek güncelleştirilmesini istediğinizi önerir. Diğer cevaplardaki kod, her birini birinciyle aynı değere ayarlayacaktır.

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

Bu, her b elemanı ayrı ayrı güncellenecektir:

Sen .html() ait geri arama imza kullanmak gerekir.

Bir parça daha tavsiye: DOM'u aşağıya indiren öğelere kimlik ya da sınıflar koyun. Bu, seçiminizi önemli ölçüde kolaylaştıracak, kodun yürütülmesini ve yazılmasını hızlandıracaktır. Bu durumda, örneğin, en düşük td öğelerinize aggrchild sınıfını koyabilirsiniz ve $('td.aggrchild b') gibi bir seçim yapabilirsiniz.