2011-01-12 27 views
8

Có cách nào - bất kỳ bộ chọn jQuery nào (tôi không tìm thấy số nào trên http://api.jquery.com/category/selectors/), có thể được sử dụng làm đối sánh chính xác không?Bộ chọn jQuery - Nội dung phù hợp của các phần tử

:contains() gần như là những gì tôi cần nhưng không chính xác. ": chứa" tìm kiếm trong mỗi phần tử regex như thế này:

.*<query>.* 

Có nghĩa là, nếu tôi cần phải tìm liên kết, mà trông giống hệt như thế này:

<a href="#">Baxter</a> 

Và sử dụng này:

$("a:contains('Baxter')") 

Nó cũng khớp với điều này, mà tôi không muốn khớp:

<a href="#">I'm Peter Baxter, how are you?</a> 

Tôi biết, tôi có thể lấy tất cả các yếu tố và so sánh nội dung của chúng trong chu kỳ, nhưng tôi muốn chắc chắn, không có cách nào dễ dàng hơn.

Trả lời

12

Không, nhưng nó sẽ là tầm thường để thêm như là một plugin:

$.expr[':'].contentIs = function(el, idx, meta) { 
    return $(el).text() === meta[3]; 
}; 

Sau đó, bạn có thể sử dụng điều này như $('a:contentIs("Baxter")')

+0

thats một, ít mở rộng thật sự tốt đẹp. Tôi tự hỏi tại sao điều này không có trong lõi –

+1

@ P.scheit Nó khá tốn kém, tính toán ... Mặc dù, nhìn lại, nó có thể được cải thiện với '$ .text ([el])' chứ không phải là '$ (el). text() '. – lonesomeday

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