【发布时间】:2012-08-07 19:03:15
【问题描述】:
我目前有一个脚本,可以在页面上搜索用户键入的单词,如果找到该单词会突出显示。
但是,当用户在他们正在搜索的字符串中放置一个空格时,这会失败,因为我使用 jQuery 将文档文本拆分为节点,并检查每个节点是否包含当前搜索短语。
我想做的是扩展它以搜索用户定义的字符串,而不是在第一个空格之后失败。不过,我完全不知道该怎么做,所以我希望有人能在这里帮助我。
这是我目前正在使用的,用于查找节点:
keyup(function({
$(instance.textWrapper).html(instance.getOriginalText());
if (this.value.length >= instance.startSearchingLength) {
var regx = new RegExp("(" + escape(this.value) + ")", 'gi');
$(instance.textWrapper).each(function() {
var textNodes = $(this).find('*').contents().filter(function(){
return this.nodeType === 3
});
textNodes.each(function(){
var $this = $(this);
var content = $this.text();
content = content.replace(regx,
'<span class="'
+ instance.highlightCssClass +
'">$1</span>');
$this.replaceWith(content);
});
});
}
startSearchingLength 前面定义为必须搜索的搜索长度。
highlightCssClass 正是 CSS 类在找到字符串后将其包裹起来的内容。
失败示例:
搜索foo bar 会在页面上突出显示foo 的每个实例,但是一旦遇到空格,这些突出显示就会消失,并且无法找到完整的字符串。
因此,代码当前搜索每个单独的 Text Node 以查找搜索查询,但我希望让脚本在文件的所有文本中找到任何字符串。我不知道如何做到这一点,所以任何帮助将不胜感激!
谢谢!
【问题讨论】:
-
那么
regx呢?当你在它失败时,不要忘记一个具体的例子 -
等一下,我会尽快编辑,对此感到抱歉
-
我记得最近分享了一个相关帖子的this 链接。它可能对你有帮助。
标签: javascript jquery search