如何仅将关键字的 "some" 转换为 link 而不是全部
how to convert only "some" of the keyword to link instead of all
我已经这样做了一个星期了。仍然找不到答案。我试图仅将部分关键字转换为 link 而不是全部。例如,如果一个段落中有 7 个关键字,我如何只转换其中的 3 个?有人可以帮忙吗?请
目前这是我的代码。
(function($) {
$.fn.replacetext = function(target, replacement) {
// Get all text nodes:
var $textNodes = this
.find("*")
.andSelf()
.contents()
.filter(function() {
return this.nodeType === 3 &&
!$(this).parent("a").length;
});
$textNodes.each(function(index, element) {
var contents = $(element).text();
contents = contents.replace(target, replacement);
$(element).replaceWith(contents);
});
};
})(jQuery);
$("p").replacetext(/\bdress\b/gi, "<a href='http://www.google.com'>$&</a>");
我建议对函数使用限制,然后检查到目前为止匹配的项集中匹配项的计数是否超过此限制。下面将修改前max
项。
(function($) {
$.fn.replacetext = function (target, replacement, max) {
var limit = max || -1;
// Get all text nodes:
var $textNodes = this
.find("*")
.andSelf()
.contents()
.filter(function () {
return this.nodeType === 3 && !$(this).parent("a").length;
});
$textNodes.each(function (index, element) {
var $element = $(element);
var words = $element.text().split(/\b/);
var matches = 0;
var text = words.map(function (word, index) {
if (matches >= limit) {
return word;
}
if (word.match(target)) {
++matches;
return word.replace(target, replacement);
}
return word;
});
$element.replaceWith(text.join(''));
});
};
})(jQuery);
用作
$("p").replacetext(/dress/i, "<a href='http://www.google.com'>$&</a>", 3);
如果你想要全部,只需省略最大值,它应该默认为所有关键字。
我已经这样做了一个星期了。仍然找不到答案。我试图仅将部分关键字转换为 link 而不是全部。例如,如果一个段落中有 7 个关键字,我如何只转换其中的 3 个?有人可以帮忙吗?请
目前这是我的代码。
(function($) {
$.fn.replacetext = function(target, replacement) {
// Get all text nodes:
var $textNodes = this
.find("*")
.andSelf()
.contents()
.filter(function() {
return this.nodeType === 3 &&
!$(this).parent("a").length;
});
$textNodes.each(function(index, element) {
var contents = $(element).text();
contents = contents.replace(target, replacement);
$(element).replaceWith(contents);
});
};
})(jQuery);
$("p").replacetext(/\bdress\b/gi, "<a href='http://www.google.com'>$&</a>");
我建议对函数使用限制,然后检查到目前为止匹配的项集中匹配项的计数是否超过此限制。下面将修改前max
项。
(function($) {
$.fn.replacetext = function (target, replacement, max) {
var limit = max || -1;
// Get all text nodes:
var $textNodes = this
.find("*")
.andSelf()
.contents()
.filter(function () {
return this.nodeType === 3 && !$(this).parent("a").length;
});
$textNodes.each(function (index, element) {
var $element = $(element);
var words = $element.text().split(/\b/);
var matches = 0;
var text = words.map(function (word, index) {
if (matches >= limit) {
return word;
}
if (word.match(target)) {
++matches;
return word.replace(target, replacement);
}
return word;
});
$element.replaceWith(text.join(''));
});
};
})(jQuery);
用作
$("p").replacetext(/dress/i, "<a href='http://www.google.com'>$&</a>", 3);
如果你想要全部,只需省略最大值,它应该默认为所有关键字。