这是一个具有高光效果的简单搜索功能,但它突出显示整个单词而不是匹配的字符串。
如何在浏览器中执行ctrl + f,只突出显示匹配单词的一部分?
$(document).ready(function(){
$('input').keyup(function(){
$("ul li").removeClass('hightlight');
var searchInput = $(this).val();
if(searchInput !== ""){
$("ul li:contains('" + searchInput + "')").addClass('hightlight');
}
});
});
我的在线代码:
答案 0 :(得分:4)
使用以下javascript:
$(document).ready(function(){
$('input').keyup(function(){
var searchInput = $(this).val();
$('.hightlight').contents().unwrap();
if(searchInput !== ""){
$("ul li:contains('" + searchInput + "')").each(function(i, e) {
var text = $(this).text().replace(new RegExp(searchInput, 'gm'), '<span class="hightlight">' + searchInput + '</span>');
$(this).html(text);
})
}
});
});
答案 1 :(得分:1)
这是一个包含所需HTML和CSS的工作演示。 http://jsfiddle.net/BHqTr/
$("#search").on( "keyup", function() {
$("#items li span").contents().unwrap();
$("#items li").each(function(){
var search = $("#search").val();
var item = $(this);
var text = item.text();
var regex = new RegExp(search, 'g');
text = text.replace(regex, "<span class='highlight'>"+search+"</span>");
item.html(text);
});
});
编辑:
这看起来像上一个答案的副本,如果需要可以删除。