我正在使用稍微修改过的版本,将关键字转换为另一个问题中显示的链接。
代码有一些遗漏,如下:
$(".keyword_search").each(function() {
var targetword = 'TEST';
var explanation = 'Is something you do to find out if stuff works';
//targetword and explanation actually defined in a loop, but omitted here
var content = $(this)[0];
var re = new RegExp("(\\b"+targetword+"\\b)", "gi");
content.innerHTML = content.innerHTML.replace(re,keywordconvert);
}
function keywordconvert(str, p1, offset, s ) {
return '<a href="#" data-toggle="tooltip" title="'+p1+'">'+p1+'</a>';
}
我对此代码的问题很少。
1) keywordconvert 的参数在哪里定义? str 和 p1 都包含要替换的字符串, offset 包含内容中单词的起始点, s < / em>包含内容。
2)我如何将解释字符串添加到 keywordconvert 函数中链接的 title -class?换句话说,如何向此函数添加参数?
任何帮助都会受到赞赏,我已经在网上搜索了很长时间的答案。
答案 0 :(得分:2)
1)keywordconvert的参数在哪里定义?
按String#replace
定义。当您使用正则表达式作为搜索并使用函数作为替换来调用replace
时,它会使用匹配的字符串,定义的任何捕获组以及匹配发生的偏移量调用函数,最后调用字符串本身。由于传入的正则表达式定义了一个捕获组,这意味着str
将是匹配的子字符串,p1
将是捕获组的内容,offset
将是索引(字符串中的{offset},s
将是调用replace
的整个字符串。
2)我如何将解释字符串添加到keywordconvert函数中链接的title-class?
您可能必须在each
迭代器函数中创建自己的函数,这是不理想的,例如:
$(".keyword_search").each(function() {
var targetword = 'TEST';
var explanation = 'Is something you do to find out if stuff works';
//targetword and explanation actually defined in a loop, but omitted here
var content = $(this)[0];
var re = new RegExp("(\\b"+targetword+"\\b)", "gi");
content.innerHTML = content.innerHTML.replace(re,function(str, p1, offset, s) {
return keywordconvert(str, p1 + explanation, offset, s);
});
});
请注意,我p1 + explanation
的位置我假设您想要做一些更有趣的事情,但p1
设置title
。