我正在使用jQuery highlightTextarea插件来突出显示html textarea中的单词。
它目前突出显示数组中的单词
var words = ['google', 'facebook', 'github', 'microsoft', 'yahoo', 'stackoverflow'];
但我要做的是突出显示不在数组中的所有单词。我有什么方法可以做到这一点吗?
我的jsfiddle:http://jsfiddle.net/fr7wb2b4/11/
答案 0 :(得分:1)
愚蠢我没有考虑过,这是怎么回事:
$(document).ready(function () {
var words = ['google', 'facebook', 'github', 'microsoft', 'yahoo', 'stackoverflow'];
$('#textarea').highlightTextarea({
words: [
{ color : '#F00',
words : ['(.+)']
}, // Make everything highlighted
{ color : '#FFF',
words : words
} // Make white what matched
]
});
});
您还可以使用words : ['(\\w+)']
仅突出显示单词
答案 1 :(得分:1)
您可以查看库源代码,高亮代码:https://github.com/mistic100/jquery-highlighttextarea/blob/master/jquery.highlighttextarea.js#L67
执行实际突出显示的代码段是:
$.each(this.settings.words, function(color, words) {
text = text.replace(
new RegExp(that.spacer+'('+ words.join('|') +')'+that.spacer, that.regParam),
'<mark style="background-color:'+ color +';">$1</mark>'
);
});
所以你可以用你自己的函数替换highlight
函数,并做任何你选择突出显示的逻辑(欢迎开源!)
例如,您可以复制粘贴整个函数,只需用以下内容替换$.each(words...
循环:
var replaced = '',
tokens = text.split(' ');
$.each(tokens, function(ind, token) {
if (this.settings.words.indexOf(token) != -1) {
// this token in the text is part of the 'words' - do not highlight
replaced += token;
}
else {
// this token isn't part of the words - highlight it
replaced += '<span style="...">'+token+'</span>';
}
replaced += ' ';
}
text = replaced;