将所有纯文本替换为相同div的类

时间:2015-10-05 14:08:46

标签: javascript jquery html text replace

我已经问过相关问题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 )?

2 个答案:

答案 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秒内赢了我