在页面上查找单词,用类包装span标签

时间:2010-09-26 20:27:52

标签: javascript jquery

我想在页面上找到单词,用class包装span标签。在继续执行javascript之前我已经准备好了。

如果我能弄清楚如何做这个第一部分,我想我可以得到其余部分。

在页面上查找单词,使用应用于span标记的类包装span标记。 然后必须通过以下方式搜索:

     $(document).ready(function(){

var injectionKey = /%id=inject%/ig;
var injectionStack = $('#%id%').html();

      (function($) {
  var theInjectionPage = $("span.myclass");
  theInjectionPage.html(theInjectionPage.html().replace(injectionKey, injectionStack)); 
})(jQuery)


    });

2 个答案:

答案 0 :(得分:3)

不要使用正则表达式。不要替换innerHTML的大块。不要过去Go。不要收200美元。

仅遍历文本节点,查找目标文本并拆分以插入新元素。请参阅this问题,了解使用<a>的示例代码。

答案 1 :(得分:0)

[See it in action]

function highlight(term, base) {
  if (!term) return;
  base = base || document.body;
  var re = new RegExp("(" + RegExp.escape(term) + ")", "gi"); //... just use term
  var replacement = "<span class='highlight'>" + term + "</span>";
  $("*", base).contents().each( function(i, el) {
    if (el.nodeType === 3) {
      var data = el.data || el.textContent || el.innerText;
      if (data = data.replace(re, replacement)) {
        var wrapper = $("<span>").html(data);
        $(el).before(wrapper.contents()).remove();
      }
    }
  });
}

function dehighlight(term, base) {
  var text = document.createTextNode(term);
  $('span.highlight', base).each(function () {
    this.parentNode.replaceChild(text.cloneNode(false), this);
  });
}

// escape by Colin Snover
// Note: if you don't care for (), you can remove it..
RegExp.escape = function(text) {
    return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
}