2013-10-04 36 views
0

我試圖選擇div的內容並刪除x個字符後的所有文本。不過,我需要保持標籤/豐富文本完好無損,因爲我不想結束非封閉標籤,甚至更糟糕的是,在中間分割標籤。jquery從x個字符後的所有標籤中刪除文本

所以我需要在x個字符之後清空所有標籤中的所有文本 - 或者在x個字符後刪除所有內容,然後自動關閉所有可能已打開的標籤。

我該怎麼做呢?是否可以查找未關閉的標籤,然後關閉它?或者是否可以簡單地選擇某個點後的所有文本,並刪除字符串(而不是html)。

非常感謝

+0

是'x'的文字字符「x」或可變數量的字符? –

+0

對不起,這是可變數量的字符,可能是100 –

+0

您是否嘗試過使用.textContent屬性? – Fenixp

回答

0

這是困難的,凌亂的處理文本節點,但有上this related question一些有用的信息,這使我有執行this test一些成功:

var x = 10; 
$("body *").each(function(){ 
    $(this).contents() 
     .filter(function(){ return this.nodeType ==1; }) 
     .text($(this).text().substring(0,x)); 
}); 
+0

是的,感覺真的很混亂。當內容是動態的時候,這些選擇有太多問題。邏輯應該是這樣的:1.選擇一個div的全部內容2.如果TEXT中有多於x個字符不計算標記,則添加...,然後刪除所有內容。 3.關閉現在缺少結束標記的潛在開放元素。 –

+0

文本*是否被刪除?我很努力去理解爲什麼你需要這個。可能CSS'text-overflow:ellipsis'對你有用嗎? – Moob

+0

是的,這將是完美的解決方案,除了只適用於單行文本。文本不必刪除 - 只是隱藏。但是,如果您只是縮短了文本框的長度,則文本將在該行末尾處突然結束。這使得不可能知道在哪裏插入(...)。如果只有文本溢出省略號在多行工作,那會讓生活再次甜蜜:) –

相關問題