我已经问过相关问题here。
现在尝试将许多(多一个)纯文本(例如[make-this-class]
)替换为类 <div class='make-this-class'></div>
和[make-this-class2]
在同一div <div class='make-this-class2'></div>
上的 <div class='this-div-only'></div>
类。
问题是js只替换一个单独的文本,意味着它不能替换同一个div的其他文本,当试图替换文本时,它只替换一个同一个div的文本。下面给出了HTML和JS示例。
HTML:
<div class='not-others-div'>
text text [make-this-class] text
</div>
Text text text
<div class='this-div-only'> <!-- this div only -->
text [make-this-class] text [make-this-class2] and [make-this-class3] and 10 text like this <!--trying to replace text more then one-->
</div>
JQuery的:
$(".this-div-only").html(function(i, html) {
return html.replace(/\[(.*)\]/, $("<div />", {"class":"$1"})[0].outerHTML)
})
那么如何通过jquery将许多文本替换为同一个dom元素div的类(10 10 text )?
答案 0 :(得分:1)
在正则表达式中添加g
全局标记,您还需要使用.*?
来匹配最短的
$(".this-div-only").html(function(i, html) {
return html.replace(/\[(.*?)\]/g, $("<div />", {
"class": "$1"
})[0].outerHTML)
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class='this-div-only'>
<div class='this-div-only'>
<!-- this div only -->
text [make-this-class] text [make-this-class2] and [make-this-class3] and 10 text like this
<!--trying to replace text more then one-->
text [make-this-class] text [make-this-class2] and [make-this-class3] and 10 text
</div>
答案 1 :(得分:1)
尝试添加g(全局),以更改所有发生次数:
$(".this-div-only").html(function(i, html) {
return html.replace(/\[(.*)\]/g, $("<div />", {"class":"$1"})[0].outerHTML)
})
Pranav C Balan在20秒内赢了我