2010-11-19 7 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'가 포함 된 모든 요소를 ​​선택 변경입니다. 그것을 달성하기 위해

많은 감사, 탐색

+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

가장 간단한 방법은 "모든 요소가"당신은 물론 모든 DOM 요소를 의미하여

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

하는 경우입니다.

1

위의 모든 대답은 어느 정도까지는 효과가 있지만 사용자가 선택한 요소 각각을 개별적으로 업데이트하려고한다고 제안합니다. 다른 응답의 코드는 각각의 값을 첫 번째 값과 동일한 값으로 설정합니다.

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

이 각 b 요소를 개별적으로 업데이트 할 것입니다 :

당신은 .html()의 콜백 서명을 사용해야합니다.

조언이 하나 더 있습니다. DOM 아래쪽에있는 요소에 ID 또는 클래스 넣기. 이렇게하면 선택 사항이 크게 단순 해져 코드 실행 및 작성 속도가 빨라집니다. 이 경우, 예를 들어 클래스 aggrchild을 가장 낮은 td 요소에 넣고 $('td.aggrchild b')과 같은 선택을 할 수 있습니다.