2013-10-04 28 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

是的,这将是完美的解决方案,除了只适用于单行文本。文本不必删除 - 只是隐藏。但是,如果您只是缩短了文本框的长度,则文本将在该行末尾处突然结束。这使得不可能知道在哪里插入(...)。如果只有文本溢出省略号在多行工作,那会让生活再次甜蜜:) –

相关问题