我有一个jQuery高亮工具,可以动态地将一个类添加到字符串中。
如果元素包含单词
<p>Hello World</p>
然后用户搜索“ell”,从而在单词中添加了一个跨度
<p>H<span>ell</span>o world</p>
重设这个,我用
$("span").contents().unwrap();
问题出在dom中,文本现在看起来像这样
<p>H
ell
o World</p>
由于jQuery正在添加中断,因此搜索“Hello”将无法工作。
我尝试删除换行符并尝试使用CSS,但是没有运气
$('body').html().replace(/(\r\n|\r|\n){2,}/g, '$1\n');
p {
white-space: nowrap;
}
有什么建议么?
最佳答案
不,这不是增加休息时间。您所看到的只是三个单独的文本节点。您在跨度之前,之后有一个文本节点,在跨度之前和之后有三个文本节点,而删除跨度使您剩下了这三个单独的文本节点。
但是有一种简单的方法可以解决此问题:Node.normalize()
请注意,这是HTML元素对象的方法,而不是jQuery对象–因此,在调用此方法之前,您需要取消引用jQuery对象:
$("span").contents().unwrap();
$("p")[0].normalize();
关于javascript - jQuery解包增加了休息时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36497779/