我有一個div,其中包含錨定標記的分配。如何篩選從jquery .each()函數接收到的錨標記
它們中的一些在標籤的內側有一個img。
我需要得到所有在其中具有常規文本的「a」,而不是圖像標籤或任何其他HTML標籤。
這怎麼可以用jQuery完成。
把他們都弄到我只是做:
$(element).find('a').each(function() {
...........
});
但我如何使用.text()
功能或任何其他人的東西過濾。
謝謝
我有一個div,其中包含錨定標記的分配。如何篩選從jquery .each()函數接收到的錨標記
它們中的一些在標籤的內側有一個img。
我需要得到所有在其中具有常規文本的「a」,而不是圖像標籤或任何其他HTML標籤。
這怎麼可以用jQuery完成。
把他們都弄到我只是做:
$(element).find('a').each(function() {
...........
});
但我如何使用.text()
功能或任何其他人的東西過濾。
謝謝
$(element).find('a').filter(':not(:has(*))').each(function() {
});
,說:「找a
元素,然後篩選選擇到那些沒有子元素」。 :has(*)
表示「選擇具有任何子元素的元素」,因此:not(:has(*))
表示「選擇沒有任何子元素的元素」。
您可以結合兩個選擇:
$(element).find('a:not(:has(*))').each...
然而,這意味着querySelectorAll
將無法正常工作,所以選擇將變得相當慢。
可以使用.filter
方法來篩選匹配的元素集合的只有那些包含有文本:
$("#example").find('a').filter(function() {
return $(this).text();
}).each(function() {
//Do stuff
});
這裏有一個working example。
上面的一個小問題可能是$(this).text()
將評估爲true
如果在a
元素中存在任何文本節點。這包括一個空的空間。爲了防止這種情況,你可能要修剪的文字:
$.trim($(this).text());
試試這個簡單和容易
$(element).find('a').not(":has('img')").each(function() {
...........
});
一個想法:在各區塊進行檢查是這樣的:
$(element).find('a').each(function() {
if($(this).text() == $(this).html())
{
...........
}
});