【发布时间】:2014-03-09 17:01:14
【问题描述】:
我想用 jQuery 突出显示单词。我使用实时 keyup 事件来触发突出显示,以便在输入单词时突出显示发生变化(为此使用输入文本字段)
我找到了一段可以正常工作的代码,但这段代码不适用于实时 keyup 事件,因此它会包装第一个字母并停在那里。
这是我的 HTML:
<input type="text" id="input" name="input"/>
<div id="content-block"><p>lorem ip sum </p></div>
这是我的 JS:
$('#input').live('keyup', function() {
$('#input').trigger('highLight');
});
$('#input').bind('highLight', function() {
var o = {words:$('input[name="input"]').val()};
highlight("content-block", o);
});
function highlight(id, options) {
var o = {
words: '',
caseSensitive: false,
wordsOnly: true,
template: '$1<span class="highlight">$2</span>$3'
},
pattern;
$.extend(true, o, options || {});
if (o.words.length == 0) { return; }
pattern = new RegExp('(>[^<.]*)(' + o.words + ')([^<.]*)', o.caseSensitive ? "" : "ig");
$('#'+id).each(function() {
var content = $(this).html();
if (!content) return;
$(this).html(content.replace(pattern, o.template));
});
}
【问题讨论】:
-
请查看我的更新答案以获得解决方案,而不仅仅是问题的识别。
标签: javascript jquery highlighting