2013-01-24 26 views
19

Tôi đang cố gắng thay đổi bất kỳ thành phần nào chứa chuỗi văn bản cụ thể thành màu đỏ. Trong ví dụ của tôi, tôi có thể có được các yếu tố con để trở thành màu xanh, nhưng có một cái gì đó về cách tôi đã viết dòng 'Thay thế tôi' đó là không chính xác; sự thay đổi màu đỏ không xảy ra. Tôi lưu ý rằng phương thức "contains" thường được viết là :contains nhưng tôi không thể nhận được điều đó để xác thực với $(this).jQuery nếu "điều này" chứa

$('#main-content-panel .entry').each(function() { 
     $(this).css('color', 'blue');  
});   

$('#main-content-panel .entry').each(function() { 
    if($(this).contains("Replace Me").length > 0) { 
     $(this).css('color', 'red'); 
    }  
}); 

Fiddle: http://jsfiddle.net/zatHH/

Trả lời

58

:contains là một chọn. Để kiểm tra xem một chọn áp dụng cho biến nhất định, bạn có thể sử dụng is:

if($(this).is(':contains("Replace Me")')) 

Tuy nhiên giải pháp Vega là sạch hơn trong trường hợp này.

+0

cảm ơn nó cần cho $ (this) +1 –

+1

Điều này là hoàn hảo cho xử lý câu lệnh có điều kiện. Cảm ơn – blackhawk

+0

Hoạt động tuyệt vời khi sử dụng biến jquery, chẳng hạn như '$ bodyText = $ ('div.bodyText ul li p'); 'Sau đó, nó có thể được sử dụng như' if ($ bodyText.is (': contains ("một số văn bản ") '))'. Cảm kích điều đó. – j4v1

16

Tôi không nghĩ rằng có một chức năng .contains trong jQuery. Có chức năng .contains nhưng chức năng đó được sử dụng để xem liệu phần tử DOM có phải là hậu duệ của phần tử DOM khác không. See documentation for .contains. (Khoản tín dụng cho @beezir)

Tôi nghĩ bạn đang tìm kiếm bộ chọn :contains. Xem bên dưới để biết thêm chi tiết,

$('#main-content-panel .entry:contains("Replace Me")').css('color', 'red'); 

http://jsfiddle.net/zatHH/1/

11

bạn có thể sử dụng match để tìm các văn bản bên trong các yếu tố đặc biệt

$('#main-content-panel .entry').each(function() { 
    if($(this).text().match('Replace Me')) { 
     $(this).css('color', 'red'); 
    }  
}); 

tác phẩm này thấy Updated Fiddle

+0

Điều này đã giúp tôi. Tương tự như VB.net ".contains()" – CrazyPaste

+0

Hoạt động nhưng không phân biệt chữ hoa chữ thường –

4

Tôi nghĩ chúng ta nên chuyển đổi văn bản của chúng tôi để chữ thường. Nó là tốt hơn để kiểm tra với chữ thường và chữ hoa.

$('#main-content-panel .entry').each(function() { 
    var ourText = $(this).text().toLowerCase(); // convert text to Lowercase 
    if(ourText.match('replace me')) { 
     $(this).css('color', 'red'); 
    }  
}); 
+0

Chỉ cần những gì tôi cần. Đã cố gắng để có được công việc phù hợp trước đó với một biến, và điều này đã giúp tôi ra ngoài. cảm ơn bạn. – lharby

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