jquery unwrap()sting split issue

时间:2015-10-29 16:26:14

标签: jquery html unwrap

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

因此用户搜索" Can"

&#34; <td>Canada</td>&#34;的每个实例例如转向

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

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

是这样的,$('.highlight').contents().unwrap();

问题是,如果用户然后尝试对加拿大进行另一次搜索,则无法找到它,因为(至少对我来说)发生了一些奇怪的事情......

该页面仍显示“加拿大&#39;如果我使用.html()或.text()警告表格单元格的内容,警报仍会显示“加拿大”。

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

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

所以搜索加拿大的dom将不再找到它,而是搜索“Can&#39;将.....

那么这是如何拆分的,但是在提醒时我不会维持拆分,如何解决它,所以当我删除强元素时它仍然是一个字符串......?

由于

1 个答案:

答案 0 :(得分:2)

最好通过element.normalize确定。

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

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

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