2010-12-03 41 views
20

Tôi có một bảng mà tôi đang cố gắng chọn tất cả các hàng có td chứa văn bản 'Kiểm tra' và ẩn td với lớp 'ms-vb -icon' trên tất cả các hàng phù hợpJQuery chọn tất cả các hàng chứa văn bản nhất định trong một td trong hàng

tôi intitally có mã dưới đây nhưng điều này chỉ ẩn lớp trên hàng phù hợp cuối cùng

$("td:contains('test'):last").parent().children(".ms-vb-icon").css("visibility","hidden"); 

Vì vậy, tôi đã cố gắng này, nhưng nó không làm việc ...

$("tr:has(td:contains('test')").each(function(){ 
    (this).children(".ms-vb-icon").css("visibility","hidden"); 
    }); 

Giản nhìn html như thế này:

<table> 
<tbody> 
<tr> 
<td class=ms-vb-icon></td> 
<td></td> 
<td></td> 
<td></td> 
<td></td> 
<td>test</td> 
</tr> 
</tbody> 
<table> 
+1

Tại sao không chỉ loại bỏ ': last' từ mã ban đầu của bạn? – sje397

Trả lời

31

Hãy thử:

$("tr td:contains('test')").each(function(){ 
    $(this).siblings('td.ms-vb-icon').css("visibility","hidden"); 
}); 

Bản trình diễn here.

+0

Cảm ơn Điều này làm việc tuyệt vời không chắc chắn những gì sự khác biệt giữa anh chị em và trẻ em là điều này không lừa – van

+0

đọc anh chị em jquery doc và nó có ý nghĩa – van

+2

Trẻ em thuộc về dưới td, do đó, td là cha mẹ. Vì vậy, nó là một td khác trong cùng một tr. – Malachi

6

Hãy thử với

$("tr:has(td:contains('test')").each(function(){ 
    $(this).parent().children(".ms-vb-icon").css("visibility","hidden"); 
}); 

Lớp .ms-vb-icon là một đứa trẻ của tr trong khi $(this) chức năng tham khảo các td

+0

vị trí tốt nhưng vẫn không hoạt động – van

+0

xin lưu ý rằng tôi cũng đã thêm một đóng '" 'trước mỗi chức năng. Dù sao bạn có thể xin vui lòng gửi một đánh dấu mẫu? – Lorenzo

+0

Vui lòng xem câu trả lời của tôi chỉnh sửa – Lorenzo

8

Tôi đoán bạn đang thiếu ')' Nó làm việc cho tôi:

$("tr:has(td:contains('1'))").each(function() { 
Các vấn đề liên quan