jQuery:使用一些元素查找并包装textnode

我的HTML代码:

Firebrand will tend to burn any bricks out there. so the best idea is to ignore any active firebrand if you are a bricks. Otherwise, you can challenge a firebrand if you have the proper quality to keep up with their latest technology. And don't mess up with firebrand if you are a robber. 

我想在体内找到任何“firebrand”并用jQuery替换为firebrand

只需通过DOM递归,同时使用:

.replace(/(firebrand)/gi, '$1')

在每个文本内容上。

 function firebrand($el) { $el.contents().each(function () { if (this.nodeType == 3) { // Text only $(this).replaceWith($(this).text() .replace(/(firebrand)/gi, '$1')); } else { // Child element firebrand($(this)); } }); } firebrand($("body")); 

试试以下内容。

 var textApply; textApply = function(node){ jQuery.map($(node), function(node) { var value = $(node)[0]; if (value.nodeType == 3 && value.textContent.match(/firebrand/gi)) { var foo = value.textContent.replace(/[\n\r\t ]+/,' ').replace(/firebrand/gi, 'Firebrand'); var newitem = $(foo); $(node).replaceWith(newitem); } else if (value.nodeName != 'SCRIPT') { jQuery.map($(node).contents(), textApply); } }); }; textApply($('body'));