2013-01-17 62 views
0

我試圖找到class=galleryLink所有元素誰的HTML小於X字符,然後從DOM中刪除。這是我最好的猜測:與HTML長度大於X字符少刪除元素

if($('.galleryLink').html().length < 95){ 
    this.remove(); 
} 
+0

你是什麼意思是「誰的HTML小於X字」嗎?你的意思是文字內容? – zzzzBov

+0

是的......我不是在談論表單字段,只是在這些DIV中有HTML內容的DIV。它將主要是IMG標籤,所以它將是實際的HTML。 –

+0

文本內容是html內容有很大不同。你的意思是包含所有的特殊字符,編碼,引導空白和註釋嗎?或者你是否只想過濾其中包含文本的元素? – zzzzBov

回答

4

你正在尋找正確的方向,但你不是那裏。在你的榜樣,怎麼會this以往指的是你要刪除的元素呢?

你必須適用於所有匹配的元素:

$(".galleryLink").filter(function() { 
    return $(this).html().length < 95; 
}).remove(); 

注意,.html()方法會返回元素內的標記。您可能更喜歡.text()

.filter()方法應用一個函數在匹配組的每個元素。如果它返回真值,則該元素保留在集合中。因此,在過濾器之後,您將留下所有內容長度小於95個字符的元素。

.remove()方法適用於在匹配集合的所有元素。由於該集合現在已被過濾到您想要擺脫的元素,因此它應該完成這項工作。

+0

過濾':input'元素的語法是什麼? '.remove(':not(:input)')'? –

+1

@JeromyFrench - 也可以做''.filter'回調中的工作。 'return!$(this).is(「:input」)&& ...' –

+0

就像一個魅力!謝謝- –

0

你可以使用.filter()刪除它們之前過濾下來的元素:

$('.galleryLink').filter(function() { 
    return $(this).html().length < 95; 
}).remove();