jquery unwrap() 分割问题
jquery unwrap() sting split issue
我有一个函数可以在 dom 匹配字符周围添加一个元素。
因此用户搜索 "Can"
例如,“<td>Canada</td>
”的每个实例都会变成
<td><strong class='highlight'>Can</strong>Ada</td>
当用户进行下一次搜索时,旧的突出显示将被删除。
像这样,$('.highlight').contents().unwrap();
问题是,如果用户随后尝试对加拿大进行另一次搜索,它将找不到,因为(至少对我而言)发生了一些奇怪的事情...
页面仍然显示 'Canada' 这个词,如果我使用 .html() 或 .text() 警告 table 单元格的内容,警告仍然显示 'Canada'.
如果我使用 chrome 检查器右键单击 table 单元格中的单词 canada 我可以看到它现在像
一样拆分
<td>
"Can"
"Ada"
</td>
所以搜索 dom 加拿大将不再找到它,但搜索 'Can' 会......
所以这个拆分是怎么这样的,但是在警报时拆分没有保持,我该如何解决它,所以当我删除强元素时它仍然是一个字符串...?
谢谢
这最好通过 element.normalize 解决。
unwrap()
将您的元素拆分为单独的文本节点,normalize()
会将它们重新合并在一起。删除突出显示后,只需循环遍历所有带有文本的元素(在本例中 td
)并对其进行标准化。
$('.highlight').contents().unwrap();
$('td').each(function(index,td){
td.normalize();
});
我有一个函数可以在 dom 匹配字符周围添加一个元素。
因此用户搜索 "Can"
例如,“<td>Canada</td>
”的每个实例都会变成
<td><strong class='highlight'>Can</strong>Ada</td>
当用户进行下一次搜索时,旧的突出显示将被删除。
像这样,$('.highlight').contents().unwrap();
问题是,如果用户随后尝试对加拿大进行另一次搜索,它将找不到,因为(至少对我而言)发生了一些奇怪的事情...
页面仍然显示 'Canada' 这个词,如果我使用 .html() 或 .text() 警告 table 单元格的内容,警告仍然显示 'Canada'.
如果我使用 chrome 检查器右键单击 table 单元格中的单词 canada 我可以看到它现在像
一样拆分<td>
"Can"
"Ada"
</td>
所以搜索 dom 加拿大将不再找到它,但搜索 'Can' 会......
所以这个拆分是怎么这样的,但是在警报时拆分没有保持,我该如何解决它,所以当我删除强元素时它仍然是一个字符串...?
谢谢
这最好通过 element.normalize 解决。
unwrap()
将您的元素拆分为单独的文本节点,normalize()
会将它们重新合并在一起。删除突出显示后,只需循环遍历所有带有文本的元素(在本例中 td
)并对其进行标准化。
$('.highlight').contents().unwrap();
$('td').each(function(index,td){
td.normalize();
});