2011-12-15 13 views
6

Tôi cần kiểm tra với jquery rằng phần tử neo chỉ có văn bản trong đó chứ không phải bất kỳ thẻ nào khác (img, b) hoặc bất kỳ thứ gì khác.jquery - tìm phần tử chỉ có văn bản và không phải bất kỳ thẻ html nào khác

<a href="">TV</a> 

nên được tìm thấy, nhưng:

<a href=""><img /></a> 

hay:

<a href=""><span>TV</span></a> 

hoặc bất kỳ thẻ HTML khác, không nên được tìm thấy.

Làm cách nào để thực hiện việc này?

Xin cảm ơn trước.

Trả lời

11

Chúng tôi có thể sử dụng chức năng filter() để xóa các phần tử có con (được kiểm tra bằng phương pháp children()).

var emptyAs = $('a').filter(function() { 
    return $(this).children().length == 0; 
}); 

Bạn cũng có thể sử dụng :not() selector kết hợp với :has() selector;

var moreEmptyAs = $('a:not(:has(*))'); 

Bạn có thể thấy cả hai tính năng này hoạt động trong JSFiddle sau; http://jsfiddle.net/JD67U/

+0

Cảm ơn bạn rất nhiều! – Ovi

-2

Bạn có thể thử .text() điều này chỉ thoát khỏi văn bản và loại bỏ mọi Mã HTML.

var pureText=$('a').text(); 
+1

Người hỏi không muốn lọc; anh ấy muốn kiểm tra. –

+0

tôi có đề cập đến .filter trong bất kỳ dòng mã nào không? –