我試圖選擇div的內容並刪除x個字符後的所有文本。不過,我需要保持標籤/豐富文本完好無損,因爲我不想結束非封閉標籤,甚至更糟糕的是,在中間分割標籤。jquery從x個字符後的所有標籤中刪除文本
所以我需要在x個字符之後清空所有標籤中的所有文本 - 或者在x個字符後刪除所有內容,然後自動關閉所有可能已打開的標籤。
我該怎麼做呢?是否可以查找未關閉的標籤,然後關閉它?或者是否可以簡單地選擇某個點後的所有文本,並刪除字符串(而不是html)。
非常感謝
我試圖選擇div的內容並刪除x個字符後的所有文本。不過,我需要保持標籤/豐富文本完好無損,因爲我不想結束非封閉標籤,甚至更糟糕的是,在中間分割標籤。jquery從x個字符後的所有標籤中刪除文本
所以我需要在x個字符之後清空所有標籤中的所有文本 - 或者在x個字符後刪除所有內容,然後自動關閉所有可能已打開的標籤。
我該怎麼做呢?是否可以查找未關閉的標籤,然後關閉它?或者是否可以簡單地選擇某個點後的所有文本,並刪除字符串(而不是html)。
非常感謝
這是困難的,凌亂的處理文本節點,但有上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));
});
是的,感覺真的很混亂。當內容是動態的時候,這些選擇有太多問題。邏輯應該是這樣的:1.選擇一個div的全部內容2.如果TEXT中有多於x個字符不計算標記,則添加...,然後刪除所有內容。 3.關閉現在缺少結束標記的潛在開放元素。 –
文本*是否被刪除?我很努力去理解爲什麼你需要這個。可能CSS'text-overflow:ellipsis'對你有用嗎? – Moob
是的,這將是完美的解決方案,除了只適用於單行文本。文本不必刪除 - 只是隱藏。但是,如果您只是縮短了文本框的長度,則文本將在該行末尾處突然結束。這使得不可能知道在哪裏插入(...)。如果只有文本溢出省略號在多行工作,那會讓生活再次甜蜜:) –
是'x'的文字字符「x」或可變數量的字符? –
對不起,這是可變數量的字符,可能是100 –
您是否嘗試過使用.textContent屬性? – Fenixp