【发布时间】:2016-08-06 02:10:55
【问题描述】:
在之前看过这个帖子之后,JQuery search in static HTML page with highlighting of found word,我终于找到了我要找的东西。但是,搜索似乎破坏了其他 HTML 标记。我知道它不适合我的确切要求,但我正在寻求帮助。
这是一个 HTML 示例:
$('#searchfor').keyup(function(){
var page = $('#all_text');
var pageText = page.text().replace("<span>","").replace("</span>");
var searchedText = $('#searchfor').val();
var theRegEx = new RegExp("("+searchedText+")", "igm");
var newHtml = pageText.replace(theRegEx ,"<span>$1</span>");
page.html(newHtml);
});
#all_text span {
text-decoration: underline;
background-color: yellow;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
<input type="text" id="searchfor" />
<ul id="all_text">
<li><a href="/somewhere">Somewhere</a></li>
<li><a href="/somewhere-else">Over there</a></li>
</ul>
在搜索框中输入后,它会删除所有<li> 标签和所有<a> 标签。我对 Javascript 或 Jquery 不是很有信心,所以我无法自己解决这个问题。它需要保留列表和超链接,但只在可见文本中搜索(即不在href字段中搜索)。
非常感谢所有输入。
【问题讨论】:
-
试试bartaz.github.io/sandbox.js/jquery.highlight.html或类似的插件(谷歌提供一些)
-
谢谢@MoshFeu。设法让它与您的建议相符。
-
Mosh Feu 推荐的插件没有维护(最后一次提交是从 2010 年开始),在 GitHub 上禁用了问题,并且不会重新定位到原始插件(落后 2 个版本)。使用它时应该非常小心。相反,请查看mark.js。
标签: javascript jquery html