【问题标题】:jquery unwrap() sting split issuejquery unwrap() sting split 问题
【发布时间】:2015-10-29 16:26:13
【问题描述】:

我有一个函数可以在匹配字符周围向 dom 添加一个元素。

所以用户搜索“可以”

例如“<td>Canada</td>”的每个实例都会变成

<td><strong class='highlight'>Can</strong>Ada</td>

当用户进行下一次搜索时,旧的突出显示被删除。

就像这样,$('.highlight').contents().unwrap();

问题是,如果用户随后尝试再次搜索加拿大,它将找不到,因为(至少对我而言)发生了一些奇怪的事情......

页面仍显示“加拿大”一词,如果我使用 .html() 或 .text() 提醒表格单元格的内容,则提醒仍显示“加拿大”。

如果我使用 chrome 检查器右键单击表格单元格中的单词 canada,我可以看到它现在被拆分为

<td>
    "Can" 
    "Ada" 
</td>

所以搜索加拿大的 dom 将不再找到它,但搜索 'Can' 会.....

那么这个拆分是怎么回事,但是在警报时拆分不会保持,我该如何解决它,所以当我删除强元素时它仍然是一个字符串......?

谢谢

【问题讨论】:

  • 为什么不$('.highlight').parent().html(function() { return this.innerText; });
  • 我不确定你的建议是什么?

标签: jquery html unwrap


【解决方案1】:

最好通过element.normalize 解决此问题。

unwrap() 将您的元素拆分为单独的文本节点,normalize() 会将它们重新合并在一起。删除突出显示后,只需循环遍历所有带有文本的元素(在本例中为 td)并将它们标准化。

$('.highlight').contents().unwrap();

$('td').each(function(index,td){
    td.normalize();
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 1970-01-01
    • 2013-09-15
    • 2014-07-17
    • 2017-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多