【发布时间】:2020-04-14 20:02:52
【问题描述】:
这是输入搜索词之前的文本格式。
输入术语后,它会丢失初始格式(返回纯文本)并按找到的连续字符数复制 p 文本(实际上我知道为什么会这样,但又不知道如何避免它):
我想要的是保留我最初的 html 格式,使用那些突出显示的单词,当然还要避免文本重复。
这是我的代码 sn-p:
function searchHighlight(searchText) {
if (searchText) {
var content = $("p").text();
// i for case insensitive, g search all matches
var searchExpression = new RegExp(searchText, "ig");
var matches = content.match(searchExpression);
if (matches) {
$("p").html(content.replace(searchExpression, function(match) {
return "<span class='highlight'>" + match + "</span>";
}));
} else {
$(".highlight").removeClass("highlight");
}
} else {
$(".highlight").removeClass("highlight");
}
}
$("#search").keyup(function() {
// Return the value inside the text box
searchHighlight($(this).val());
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js">
</script>
<p>
<span>jQuery selektori</span> omogućavaju selektovanje i upravljanje HTML elementima.
Selektori traže HTML elemente na osnovu njihovih identikatora, klasa, atributa,
vrednosti atributa i dr. Bazirani su na CSS selektorima, ali postoje još neki.
Svi selektori u <span>jQuery-ju</span> počinju sa znakom dolara i zagradama: $() .
</p>
<p id="paragraph">
<span>Selektor $("*
")</span> selektuje sve elemente.
<span>– Selektor $(this)</span> selektuje element na koji se odnosi funkcija koja ga obuhvata.
<span>– Selektor $("p.intro")</span> selektuje sve p elemente sa atributom class="intro" .
Uvod u Veb i Internet Tehnologije 133
<span>– Selektor $("p:first")</span> selektuje prvi p element.
<span>– Selektor $("ul li:first")</span> selektuje prvi li element prvog ul elementa.
<span>– Selektor $("ul li:first child")</span> selektuje prvi li element svakog ul elementa.
<span>– Selektor $("[href]")</span> selektuje sve elemente koje imaju postavljen atribut
href . – Selektor $("a[target='_blank']") selektuje sve elemente a sa atributom target="_blank"
. – Selektor $("a[target!='_blank']") selektuje sve elemente a koji
nemaju atribut target="_blank" . – Selektor
</p>
【问题讨论】:
-
您使用removeClass,但没有使用addClass 是否有原因? api.jquery.com/addClass
-
我已经在这里追加了类 ' + match + '。 removeClass 用于在删除搜索词字符时删除亮点。也许我没听懂你?
标签: javascript jquery html css