2015-10-15 73 views
0

我正在使用脚本来突出显示通过keyup事件匹配文本框中条目的容器中的文本。什么情况是,这是符合被包裹在像这样的跨度标签的文字: (集装箱“我的文本搜索”文本,检索词:“烤焦”)jquery标签删除导致换行符?

My text <span class='highlight'>sear</span> 
ch 

当我试图删除这持续一个较长的搜索字符串(用户输入在文本框中输入其他字符),我得到:

My text sear 
ch 

我跑了扫描过它,它无法识别为一个换行符。有什么方法可以模拟'删除'字符来将字符串重新组合起来吗?否则,您可以看到为什么搜索无法继续执行整个单词,因为标记删除会拆分单词。

排除方法

jQuery.fn.removeHighlight = function() { 
$(this).find('.highlight').each(function() { 
     var cont = $(this).contents(); 
     $(this).replaceWith(function() { return cont; });   
}); 
} 
+0

你想看到什么(添加标签,删除标签,扫描换行符)?我试图简化问题,所以我可以得到一个概念性的答案... – Andrew

+1

请参阅编辑...'删除方法' – Andrew

+0

是否以其他方式标记文本? – saluce

回答

1

这是我想出了,我已经验证了它的工作原理...只是不得不从不同的角度来吧......

jQuery.fn.removeHighlight = function() { 
$(this).find('.highlight').each(function() { 
    var cont = $(this).contents(); 
    var tag = $(this).parent().prop('tagName'); 
    var tid = $(this).parent().attr('id'); 
    var testid = '#' + tid; 
    var testTxt= ''; 

    $(this).replaceWith(function() { return cont; }); 


    testTxt = $(testid).text(); 
    testTxt = testTxt.replace(/(\r\n|\n|\r)/gm, ""); 
    $(testid).text(testTxt); 


}); 

} 

这将删除'highlight'类的span标记,并删除父标记内部文本中标记删除后留下的任何后续换行符。