因此,作为网络应用程序的一部分,我试图在我的标记中找到特定的字符集,并在必要时将其替换为其他元素(这会将它们转换为图标而不是纯文本)。
$timeout(function () {
$('.collapsible').collapsible();
$(".manaCost:contains('{B}')").html(function (_, html) {
return html.replace(/{B}/g, "<i class=\"ms ms-b\"></i>");
});
$(".manaCost:contains('{R}')").html(function (_, html) {
return html.replace(/{R}/g, "<i class=\"ms ms-r\"></i>");
});
$(".manaCost:contains('{W}')").html(function (_, html) {
return html.replace(/{W}/g, "<i class=\"ms ms-w\"></i>");
});
$(".manaCost:contains('{G}')").html(function (_, html) {
return html.replace(/{G}/g, "<i class=\"ms ms-g\"></i>");
});
$(".manaCost:contains('{U}')").html(function (_, html) {
return html.replace(/{U}/g, "<i class=\"ms ms-u\"></i>");
});
$(".manaCost:contains('{ANY-INTEGER BETWEEN BRACES}')").html(function (_, html) {
return html.replace(/{ANY-INTEGER BETWEEN BRACES}/g, "<i class=\"ms ms-SAME-INTEGER\"></i>");
});
}, 0);
所有在其中都有字母的(例如,'{B}'}工作得很好,但是整数一个稍微复杂一些。我需要在括号内找到整数的任何实例,但是然后还需要将相同的整数应用于替换元素中的类。任何人都知道我会怎么做?
答案 0 :(得分:0)
/\{(\d)\}/g
之类的内容会捕获整数,因此您可以使用$1
等获取
$("#test").html(function (_, html) {
return html.replace(/\{(\d)\}/g, "<i class=\"s$1\">$1</i>");
});
&#13;
.s2 {color: red}
.s3 {color: blue}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="test">
test {2} {3} something
</div>
&#13;
正如Rory所提到的,你应该考虑立即进行所有替换,并且确实没有必要检查每个元素是否包含你正在寻找的东西,只是做
$(".manaCost").html(function(_, html) {
return html.replace(/\{B\}/g, "<i class=\"ms ms-b\"></i>")
.replace(/\{R\}/g, "<i class=\"ms ms-r\"></i>")
.replace(/\{W\}/g, "<i class=\"ms ms-w\"></i>")
.... etc
});