0

我正在使用将关键字转换为此处另一个问题中提供的链接的略微修改版本。

代码如下,有一些遗漏:

$(".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的参数在哪里定义?strp1都包含要替换的字符串,offset包含内容中单词的起点,s包含内容

2)如何将解释字符串添加到关键字转换函数中链接的标题类?换句话说,我怎样才能给这个函数添加参数?

任何帮助将不胜感激,我已经在网上搜索答案太久了。

4

1 回答 1

2

1)keywordconvert的参数在哪里定义?

根据String#replace定义。当您replace使用正则表达式作为搜索并使用函数作为替换调用时,它会使用匹配的字符串、定义的任何捕获组、匹配发生的偏移量以及最后是字符串本身来调用函数。由于传入的正则表达式定义了一个捕获组,这意味着str它将是匹配的子字符串,p1将是捕获组的内容,offset将是字符串中的索引(偏移量),并且s将是整个replace字符串叫。

2)如何将解释字符串添加到关键字转换函数中链接的标题类?

您可能必须在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.

于 2013-03-25T08:39:06.933 回答