JavaScript高亮关键字文本

Javascript 2019-12-14 阅读 39 评论 0

有很多jQuery插件可以实现文本高亮,这里使用一个简单的方法,实现高亮,不需要其他JavaScript包,只是纯净的JavaScript,这个脚本返回被处理的原始数据,高亮的文本用标签包含起来,可以使用css定义样式。

function highlight(text, words, tag) {
	// 默认的标签,如果没有指定,使用span
	tag = tag || 'span';
	var i, len = words.length, re;
	for (i = 0; i < len; i++) {
		// 正则匹配所有的文本
		re = new RegExp(words[i], 'g');
		if (re.test(text)) {
			text = text.replace(re, '<'+ tag +' class="highlight">$&</'+ tag +'>');
		}
	}
	return text;
}

将高亮文本还原

function unhighlight(text, tag) {
	// 默认的标签,如果没有指定,使用span
	tag = tag || 'span';
	var re = new RegExp('(<'+ tag +'.+?>|<\/'+ tag +'>)', 'g');
	return text.replace(re, '');
}

使用方法:

$('p').html( highlight(
	$('p').html(), //替换的文本
	['foo', 'bar', 'baz', 'hello world'], //高亮的文本数组
	'strong' //自定义标签
));

源码地址:前往查看

演示:高亮文本

最后更新 2019-12-14
MIP.watch('startSearch', function (newVal, oldVal) { if(newVal) { var keyword = MIP.getData('keyword'); console.log(keyword); // 替换当前历史记录,新增 MIP.viewer.open('/s/' + keyword, {replace: true}); setTimeout(function () { MIP.setData({startSearch: false}) }, 1000); } }); MIP.watch('goHome', function (newVal, oldVal) { MIP.viewer.open('/', {replace: false}); });