我想要一个Javascript Regex来包装给定的start(<span>)和结束标记(即</span>)中给定的单词列表,但前提是该单词实际上是页面上的"可见文本",而不是在html属性中(例如链接的标题标记或<script></script>块内部.
我已经创建了一个基本设置的JS小提琴:http: //jsfiddle.net/4YCR6/1/
有没有一种方法可以在jQuery中找到jQuery中的文本字符串,而不是用其他东西替换它,但是用一个元素包装该文本,这样当脚本完成时,它会用文本字符串包裹原始文本.
例:
原文
"Hello world to all people"
Run Code Online (Sandbox Code Playgroud)
搜索字符串
"world to"
Run Code Online (Sandbox Code Playgroud)
用...来代替 <i></i>
最终输出
"Hello <i>World to</i> all people"
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助!
一种工作代码:
function highlightChild(child) {
$(childElements[child]).text("");
console.log(child);
$('.child_element_' + child).bind('textselect', function(e){
var selection = e.text;
var str = $("#construct_version").text();
var wrap = jQuery(childElements[child]).text(selection);
var re = new RegExp("" + selection + "", "g");
console.log(str.replace(selection, function(match, key, val){
console.log(match);
console.log(key);
console.log(val);
jQuery(childElements[child]).text(val)
}));
});
}
Run Code Online (Sandbox Code Playgroud)
上面的代码执行替换,但它实际上替换它显示为undefined.
因此,如果原始字符串是所有人的Hello world并且我想要将world替换为with <b>world to</b>,则它在console.log中显示为Hello undefined all
我正在开发一个 Chrome 扩展程序,它可以替换网页文本中的指定字符串或正则表达式。
\n\n总体来说效果很好,但有两个问题我想解决:
\n\n(1) 在文本替换发生之前,显示原始的、未更改的网页文本。
\n\n(2) 文本替换不会影响滚动到页面底部后动态加载的 Facebook 帖子。
\n\n这是代码,改编自/sf/answers/420864181/#6012345,并进行了微小的更改。
\n\n// manifest.json\n\n{\n "manifest_version": 2,\n "name": "Replace Text",\n "version": "1.0", \n\n "content_scripts": [ {\n "js": [ "jquery.min.js", "replace.js" ],\n "matches": [ "<all_urls>" ],\n "run_at": "document_end"\n } ]\n}\n\n\n// replace.js\n\njQuery.fn.textWalk = function( fn ) {\n this.contents().each( jwalk );\n\n function jwalk() {\n var nn = this.nodeName.toLowerCase();\n if( nn === \'#text\') {\n fn.call( this );\n } else if( this.nodeType === 1 && this.childNodes && this.childNodes[0] && nn …Run Code Online (Sandbox Code Playgroud)