2011-10-31 26 views
6

HTML:Sử dụng jQuery .filter() để chọn văn bản cụ thể trong div

<p class="greeting"> 
    hello, my name is kevin. what's yours? 
</p> 

jQuery:

$("p.greeting").filter(function(){ 
    return $this.text() === "my name is"; 
}).css("background", "green"); 

Tôi đang cố gắng để cô lập dòng chữ "my name is" trong thẻ <p class="greeting"> . Bất cứ ai có thể giúp tôi với jQuery vì nó dường như không hoạt động. Cảm ơn.

+0

Bản sao có thể có của http://stackoverflow.com/questions/926580/find-text-string-using-jquery – motoxer4533

Trả lời

8

Ở đây bạn đi:

CSS:

.highlight { background-color: yellow; } 

JavaScript:

var text = 'My namE iS'; 

$('p.greeting').html(function (i, html) { 
    var regexp, replacement; 

    regexp = RegExp('(' + text + ')', 'gi'); 
    replacement = '<span class="highlight">$1</span>'; 

    return html.replace(regexp, replacement); 
}); 

Live Demo:http://jsfiddle.net/SGCDS/5/

+0

Điều này có vẻ tốt, mặc dù để đáp ứng hoàn toàn các yêu cầu của câu hỏi, bạn nên đặt một số lớp học trên đó và sau đó .css lớp đó thành nền "xanh". – Bruce

+0

cảm ơn tuyệt vời! có cách nào đơn giản để có 'var text' không phân biệt chữ hoa chữ thường không? – pruett

+1

@Bruce Lời khuyên tốt. Tôi đã làm điều đó. Tôi thích màu nền màu vàng. Các OP có thể thay đổi nó thành màu xanh lá cây ... –

0

Bạn trả về hàm luôn luôn sai. Chỉ khi có chính xác "tên tôi là" trong div của bạn, nó sẽ trả về true.

Hãy thử một cái gì đó như thế này:

return $(this).text().indexOf("my name is") != -1; 
+0

hmm ... dường như không hoạt động. là -1 một nodeType? Tôi không quen thuộc với điều này – pruett

+1

Tôi tin rằng yêu cầu bồi thường là nếu text() không chứa chuỗi con "tên của tôi là" thì .indexOf() sẽ trả về -1. – Bruce

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