JQuery在链接的静态页面中搜索,突出显示找到的单词,而不破坏列表
JQuery search in static page of links with highlighting of found word without breaking list
之前看了这篇文章,JQuery在静态HTML页面中搜索,并突出显示找到的单词,我终于找到了我想要的东西。然而,搜索似乎破坏了其他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
字段中搜索)。
非常感谢所有的投入。
所以我认为问题的解决方案是,您只需要获得要突出显示的锚点的内容。下面是jsfiddle:https://jsfiddle.net/kimaescobar/k83j7Lqv/1/但基本上,我在锚中创建了一个可搜索的类,而不是在all_text中创建的所有可搜索的:
Html
<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 class="searchable" href="/somewhere">Somewhere</a></li>
<li><a class="searchable" href="/somewhere-else">Over there</a></li>
</ul>
css
#all_text em {
text-decoration: underline;
background-color: yellow;
}
JS
$('#searchfor').keyup(function(){
var $page = $('#all_text .searchable');
$page.each(function(i,a){
$a = $(a)
$a.html($a.html().replace(/<em>/g,"").replace(/'<'/em'>/g,""))
})
var searchedText = $('#searchfor').val();
if(searchedText != ""){
$page.each(function(i,a){
$a = $(a)
var html = $a.text().replace(new RegExp("("+searchedText+")", "igm"), "<em>$1</em>")
$a.html(html)
})
}
});
obs:我从span改为em,因为在html5中,当你想突出显示某个东西时,你会使用strong或em(取决于你想要的语义)。
因为我的编辑被拒绝了。不完全确定原因,但他的代码可以精简很多。这是我的编辑:
所以我认为你的问题的解决方案是,你只需要获得你想突出的主播的内容。下面是jsfiddle:jsfiddle。基本上,我以锚标签为目标,并使用.each()
函数根据用户搜索的内容来替换每个锚标签中的内容。
.each的api文档
javascript取代函数
Html
<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>
css
#all_text span {
text-decoration: underline;
background-color: yellow;
}
JS
$('#searchfor').keyup(function(){
var $page = $('#all_text a');
var searchedText = $('#searchfor').val();
$page.each(function(i,a){
$a = $(a);
$a.html($a.html().replace(/<span>/g,"").replace(/'<'/span'>/g,""));
var html = $a.text().replace(new RegExp("("+searchedText+")", "igm"), "<span>$1</span>");
$a.html(html);
});
});
相关文章:
- 在字符串列表中搜索任何出现的单词,如果单词的第一个字符匹配,则高亮匹配单词.Javascript正则表达式
- 如何根据 js 中每个单词的第 n 个字母按字母顺序排列列表
- 如何将单词列表拆分为数组
- JQuery-从单词列表生成网格
- JavaScript-从脚本中的单词列表创建一个html表或网格
- 如何更新单词列表中搜索框中包含用户键入内容的单词/字母数
- 创建一个输入,该输入在用户键入后立即不断更新单词列表
- 忽略单词列表
- JavaScript中要忽略的单词列表
- 如何检查我的 chrome 扩展程序的 if 语句中的单词列表
- 如何使用Javascript正则表达式从可能的单词列表中获取单词的最后一次出现
- 在JavaScript中,如何使用regex进行匹配,除非单词在排除的单词列表中
- 如何使用正则表达式来获取阿拉伯字符串中的单词列表?
- 将单词列表转换为数组
- 向单词列表添加一些文本
- 有没有“电影演职员表”滚动显示?样式插件的单词列表
- 获取字符串中包含子字符串的单词列表
- 使用可选的包含和排除单词列表来定位一组单词
- 纯Javascript -查找/替换DOM中的单词列表
- JavaScript表单验证 - 值长度和阻止的单词列表