2012-03-01 41 views
16

Tôi có tìm kiếm nhập văn bản được cho là lọc div dựa trên tiêu đề của div. Đây là mã không hoạt động:Hiển thị số div dựa trên tìm kiếm văn bản

$('.contact-name').each(function(){ 
    var txt = $('#search-criteria').val(); 
    $('this').find(txt).show()  
}); 

Tôi đang làm gì sai?

EDIT: Để làm rõ biến txt là những gì người dùng đã nhập vào trường nhập. Một ví dụ là nếu txt là Cha tôi muốn hàng này để hiển thị:

<div class="contact-name"><h3><a href="##">Charles Smith</a></h3></div> 

Trả lời

41

thử

var txt = $('#search-criteria').val(); 
$('.contact-name:contains("'+txt+'")').show(); 

documentation for :contains() Selector

fiddle ví dụ này: http://jsfiddle.net/WBvTj/2/

CẬP NHẬT TRƯỜNG HỢP TRƯỜNG HỢP NSITIVE:

var txt = $('#search-criteria').val(); 
$('.contact-name').each(function(){ 
    if($(this).text().toUpperCase().indexOf(txt.toUpperCase()) != -1){ 
     $(this).show(); 
    } 
}); 

Ví dụ fiddle: http://jsfiddle.net/WBvTj/4/

+0

Xem giải thích bổ sung của tôi ở trên. Tôi đang xem xét đánh giá văn bản bên trong div. –

+0

đã cập nhật câu trả lời .. kiểm tra xem –

+0

Đó có phải là hoạt động chủ yếu, có cách nào để khiến trường hợp đó không nhạy cảm không? –

0

May mắn jQuery có một selector Contains:

$('.contact-name').each(function(){ 
    var txt = $('#search-criteria').val(); 
    $(this).find('div:contains("'+txt+'")').show()  
}); 
0

Phương pháp find mất một selector JQuery như tham số. Tôi nghi ngờ đầu vào văn bản search_criteria của bạn sẽ chứa nội dung đó. Giả sử nó sẽ chứa một số chuỗi quyền sở hữu của Bảo hiểm tiền gửi, sau đó thử này:

var txt = $('#search-criteria').val();  
$('.contact-name').each(function(i, e){ 
    if($(e).attr("title").indexOf(txt)>=0) $(e).show(); 
}); 
0

Sau đây nên case-insensitive, và kết hợp chỉ trên văn bản trong đầu a href trong div:

var pattern = "/" + $('#search-criteria').val() + "/i"; 
$('.contact-name').filter(function() { 
    return $(this 'a:first-child').html().match(pattern).length > 0; 
}).show(); 

lọc cho bạn một danh sách các phần tử trả về true từ hàm đó trong nó để áp dụng show() đến.
Trả về hàm lọc có thể được đọc là: "đối với phần tử neo đầu tiên trong phần tử này, lấy nội dung, khớp với mẫu đó và nếu mảng kết quả chứa 1 hoặc nhiều kết quả, trả về true".

Chữ "i" ở cuối mẫu là điều khiến bạn không khớp với chữ hoa chữ thường.

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