【问题标题】:How to turn keyword on a site into links with jQuery如何使用 jQuery 将网站上的关键字转换为链接
【发布时间】:2013-07-25 19:16:58
【问题描述】:

我正在尝试将一组关键字转换为我网站上的链接。我目前正在使用此代码,它将一个关键字变成一个链接。但是,现在我想将其扩展为有几个单词。链接始终是相同的,但是,关键字会发生变化,因此链接文本也必须反映这一点。

这是我目前使用的代码:

<script type="text/javascript">
(function($) {
  var thePage = $("body");
  thePage.html(thePage.html().replace(/Wedding Stationery/ig, '<a class="discrete" href="http://www.kateguest.com">wedding stationery</a>'));
})(jQuery)
</script>

如何扩展它以使用 5 或 6 个关键字?

【问题讨论】:

标签: jquery replace keyword


【解决方案1】:

循环替换。您可以在替换中使用$&amp; 来引用匹配的文本。

var keywords = ['wedding stationery', 'something else', 'other keyword'];
var thePage = $("body");
var theHtml = thePage.html();
for (i = 0; i < keywords.length; i++) {
    theHtml = theHtml.replace(new RegExp(keywords[i], 'ig'),
                '<a class="discrete" href="http://www.kateguest.com">$&</a>');
}
thePage.html(theHtml);

DEMO

【讨论】:

  • 谢谢 Barmar,但我恐怕这对我不起作用,我的话没有做任何改变
  • 修复了两个问题。它应该是RegExp$&amp;。我添加了一个 jsfiddle 演示。
【解决方案2】:

我会建议这样的事情:

var keywordsArray = ["place", "all", "of the", "keywords in here like this"];
var thePage = $("body");

for (var i = 0; i < keywordsArray.length; i++) {
    thePage.find(":contains("+keywordsArray[i]+")").each(function(){
        var _this = $(this);
        var content = _this.html();
        content.replace(keywordsArray[i], '<a href="discrete" href="http://whateveryouwant.com/">' + keywordsArray[i] + '</a>');

        _this.html(content);
    });
};

【讨论】:

  • 不幸的是,这似乎不起作用。没有更改任何关键字
  • 您需要编辑代码以使其适合您的关键字。如果你读了它,你就会明白如何。
  • 抱歉,是的,我已经这样做了,但我仍然不需要将它包装在 $(document).ready(function() {??? 我是 jQuery 的新手
  • 如果您不使用 RegExp 作为 replace() 的参数,它只会替换第一次出现,而不是全部替换。您需要使用 RE 来获得全局替换。
猜你喜欢
  • 2012-10-01
  • 2015-12-03
  • 1970-01-01
  • 2019-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-16
相关资源
最近更新 更多