使用jQuery在页面上包装每个* [英] Wrap Each * on a Page Using jQuery
本文介绍了使用jQuery在页面上包装每个*的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要在< span class =red>< / span>
的页面上打包每个星号。我尝试过的一些事情都行不通。我认为这归结为我需要在页面中搜索特定字符,我无法弄清楚如何做到这一点。
I need to wrap each asterisks on a page with <span class="red"></span>
. The few things I've tried don't work. I think what this boils down to is that I need to search the page for a specific character, and I can't figure out how to do that.
推荐答案
为了不替换整个HTML(非常糟糕的态度),我们可以使用元素进行快速操作:
For not replacing the entire HTML (really bad attitude), we can do fast manipulation with elements:
var specialTags = ["script", "style"].join("|"),
re = new RegExp("^(?:" + specialTags + ")$", "i");
for (var els = document.getElementsByTagName("*"), i = els.length; i--;) {
var el = els[i];
if (re.test(el.tagName))
continue;
for (var j = 0, childs = el.childNodes, lj = childs.length; j < lj; j++) {
var child = childs[j];
if (child.nodeType === 3 && child.nodeValue.indexOf("*") > -1) {
var segments = child.nodeValue.split("*");
for (var k = 0, lk = segments.length; k < lk; k++) {
el.insertBefore(document.createTextNode(segments[k]), child);
if (k < lk - 1) {
var span = document.createElement("span");
span.className = "red";
span.appendChild(document.createTextNode("*"));
el.insertBefore(span, child);
}
}
el.removeChild(child);
}
}
}
这是纯粹的JavaScript不需要jQuery,这在这里无法提供帮助。
This is pure JavaScript which does not require jQuery, that can't really help here.
DEMO: http://jsfiddle.net/T4ZXA/5/
这篇关于使用jQuery在页面上包装每个*的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文