我有一个功能,可以在匹配字符周围为dom添加元素。
因此,用户搜索“可以”
例如,“ <td>Canada</td>
”的每个实例都将变为
<td><strong class='highlight'>Can</strong>Ada</td>
用户进行下一个搜索时,将删除旧的突出显示。
像这样 $('.highlight').contents().unwrap();
问题是,如果用户随后尝试对加拿大进行另一次搜索,将不会被发现,因为(至少对我而言)发生了奇怪的事情...
该页面仍显示单词'Canada',如果我使用.html()或.text()来警告表格单元格的内容,则警告仍将显示'Canada'。
如果我使用chrome inspector右击表格单元中的canada一词,我会看到它现在像
<td>
"Can"
"Ada"
</td>
因此,搜索dom到加拿大将不再找到它,而搜索“ Can”将.....
因此,这种拆分是如何进行的,但是在发出警报时不保留拆分,以及如何解决该拆分,因此当我删除强元素时,它仍然是单个字符串...?
谢谢
最好通过element.normalize修复。
unwrap()
正在将您的元素拆分为单独的文本节点,normalize()
并将其合并回一起。删除突出显示后,只需遍历所有带有文本的元素(在本例中为td
)并将其标准化。
$('.highlight').contents().unwrap();
$('td').each(function(index,td){
td.normalize();
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句