javascript - 如何仅将关键字的 "some"转换为链接而不是全部

标签 javascript keyword

我已经这样做了一个星期了。仍然找不到答案。我试图仅将部分关键字转换为链接而不是全部。例如,如果一个段落中有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);

如果您想要全部,只需省略最大值,它就会默认为所有关键字。

关于javascript - 如何仅将关键字的 "some"转换为链接而不是全部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28102356/

相关文章:

javascript - 仅调用多个 select 元素的最后附加的 onchange 函数

javascript - 足以避免xss吗?

c - 仅打印包含 C 关键字的第一行和最后一行

youtube - 使用 YouTube 开发者 key 提取媒体关键字

fortran - 正确使用 PURE 关键字 Fortran

javascript - 添加具有多维数组格式数据的行id/行数据

javascript - 将变量操作数应用于运算符

javascript - 简单的 jQuery 链接洞察

indexing - 如何在 Cassandra 2.1.5 中的索引上查询 CONTAINS

mysql - 如何在MySQL中使用不带反引号的保留字