2010-11-19 39 views
8

Tôi có đoạn mã sau:Jquery chọn tất cả các yếu tố có chứa văn bản trong 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); 

Những gì tôi muốn làm là thay đổi ở trên vì vậy tôi chọn tất cả các yếu tố có id chứa 'aggr'.

Nhiều Cảm ơn, Nav

+1

ID phải là duy nhất. Xin vui lòng làm rõ cho dù bạn có nghĩa là tất cả các yếu tố có * 'aggr' là ID hoặc * chứa *' aggr' trong ID. Nếu bạn có nhiều phần tử có cùng ID, bạn đang làm sai điều gì đó. –

+1

anh ấy có ID giống như 'aggr1', 'aggr2', v.v. và muốn chọn tất cả những người đó –

+0

@Scott Evernden: Đúng, tôi nên đọc tiêu đề;) @nav: Nevermind. –

Trả lời

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

Cách đơn giản nhất để đạt được điều đó là

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

Nếu bởi "tất cả các yếu tố" bạn có nghĩa là tất cả các yếu tố DOM của khóa học.

1

Tất cả các câu trả lời ở trên sẽ hoạt động ở mức độ nào đó, nhưng đoạn mã của bạn gợi ý rằng bạn muốn mỗi phần tử được chọn được cập nhật riêng lẻ. Mã trong các câu trả lời khác sẽ đặt mỗi câu trả lời có cùng giá trị với giá trị đầu tiên.

Bạn cần phải sử dụng chữ ký callback của .html():

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

này sẽ cập nhật mỗi phần tử b riêng.

Một lời khuyên khác: đặt id hoặc các lớp trên các phần tử hạ thấp DOM. Điều này sẽ đơn giản hóa lựa chọn của bạn một cách đáng kể, đẩy nhanh quá trình thực hiện và viết mã của bạn. Trong trường hợp này, ví dụ: bạn có thể đặt một lớp aggrchild trên các phần tử td thấp nhất của mình và thực hiện lựa chọn như $('td.aggrchild b').

Các vấn đề liên quan