【问题标题】:jquery remove text from all tags after x charactersjquery从x个字符后的所有标签中删除文本
【发布时间】:2013-10-04 10:58:45
【问题描述】:

我正在尝试选择一个 div 的内容并删除 x 字符之后的所有文本。但是我需要保持标签/富文本的完整性,因为我不想以非封闭标签结束,或者更糟糕的是,标签在中间被分割。

所以我需要在 x 个字符之后清空所有标签中的所有文本 - 或者删除 x 个字符之后的所有内容,然后自动关闭所有可能保持打开状态的标签。

我该怎么做呢?是否可以查找未关闭的标签,然后将其关闭?或者是否可以在某个点之后简单地选择所有文本,然后删除字符串(而不是 html)。

非常感谢

【问题讨论】:

  • x 是文字字符 'x',还是可变数量的字符?
  • 抱歉是可变字符数,可能是100
  • 您是否尝试过使用 .textContent 属性?
  • 不,它是如何工作的?那是jQuery吗?找不到任何文件
  • 我尝试过使用 .html() ,这似乎会导致剪切标签,因为文本是动态的。我也尝试使用 .text() 但这会删除所有标签。但我不知道 .textContent

标签: jquery html text tags


【解决方案1】:

处理文本节点既困难又混乱,但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 对你有用吗?
  • 是的,这将是一个完美的解决方案,除了仅适用于单行文本。不必删除文本 - 只需隐藏即可。但是,如果您只是使框变短,则文本将在仍然可见的行尾突然结束。这使得无法知道在哪里插入 (...)。伙计,如果只有文本溢出省略号在多行上起作用,那会让生活再次变得甜蜜:)
猜你喜欢
  • 2018-02-02
  • 2019-06-21
  • 2018-05-31
  • 2019-01-22
  • 1970-01-01
  • 2014-03-14
  • 1970-01-01
  • 2015-11-18
  • 1970-01-01
相关资源
最近更新 更多