我想在页面上找到单词,用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)
});
答案 0 :(得分:3)
不要使用正则表达式。不要替换innerHTML
的大块。不要过去Go。不要收200美元。
仅遍历文本节点,查找目标文本并拆分以插入新元素。请参阅this问题,了解使用<a>
的示例代码。
答案 1 :(得分:0)
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, "\\$&");
}