我在自己的博客中使用ASP.NET写作,并且我使用Gist embed作为代码块。我想为代码着色以匹配特定语言在其IDE中的显示方式。特别是Xcode中的Swift。
我从一个jsFiddle开始,已经到了选择" var"并将其变为红色,但我发现迭代单词并包装它们的示例使用 return 值来打破循环。
更新:我在这里找到的return语句会导致语法错误。我改编了this post的代码,很乐意探索替代方案。
我能够匹配一个单词,但我无法找到继续操作的方法。为简单起见,我们只能找两个单词, var & 替换即可。
我的代码:
var line = $('.line');
$.each(line, function(i, val){
var value = $('.line').text();
$("*:contains('var')").html(function(_, html) {
return html.replace(/(var)/g, '<span style="color:red;">$1</span>');
});
$("*:contains('override')").html(function(_, html) {
return html.replace(/(override)/g, '<span style="color:blue;">$1</span>');
});
});
我的jsFiddle。
答案 0 :(得分:1)
你有一个迭代遍历每一行的循环,并且在该循环内你获取每次迭代中包含一个单词的所有元素,使替换运行很多次。
迭代执行一次,可以通过回调html()
来完成迭代,并在同一循环中执行替换
$('.line').html(function(_, html) {
html = html.replace(/(var)/g, '<span style="color:red;">$1</span>');
html = html.replace(/(override)/g, '<span style="color:blue;">$1</span>');
return html;
});