替换数组中的字符串集

时间:2016-12-21 07:14:30

标签: javascript jquery

使用$('div#top_container').html(),我得到以下示例:

<div class="top" id="top_container">
    <div class="example">First</div>
    <div class="example">Second</div>
</div>

...给予

<div class="example">First</div>
<div class="example">Second</div>

此处,使用.replace(),我想将<div class="example">替换为*%^%(随机字符集)并删除</div>

var content = $('div#top_container').html();                
var clean_1 = content.replace('<div class="example">','*%^%'); //add $*!#$
var clean_2 = clean_1.replace('</div>',' '); //remove </div>

...给予

console.log(clean_2); --> *%^%First*%^%Second

现在,example div元素的数量可能会有所不同,我需要先了解如何将它们全部定位。还有一种更清晰的方法可以同时定位<div class="example"></div>吗?

修改

我不打算改变html本身,而是将编辑后的版本作为变量我可以做的事情(例如通过ajax将其发送到php)。

我该怎么做?

3 个答案:

答案 0 :(得分:5)

使用replaceWith()方法进行回调,并通过使用text()方法获取文本内容来生成首选文本字符串。

$('div.example').replaceWith(function(v) {
  return '%^%' + $(this).text();
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  <div class="example">First</div>
  <div class="example">Second</div>
</div>

UPDATE:如果您不想更新原始元素,请使用clone()并对克隆元素执行剩余的想法。

var res = $('#parent')
  // clone element
  .clone()
  // get element with `example` class
  .find('.example')
  // update content
  .replaceWith(function(v) {
    return '%^%' + $(this).text();
  })
  // back to previos selector and get html content
  .end().html();

console.log(res)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="parent">
  <div class="example">First</div>
  <div class="example">Second</div>
</div>

答案 1 :(得分:2)

您可以使用replaceWith功能

$(function () {
   $(".example").replaceWith(function(){
     return "%^%"+$(this).text();
    });
});

如果您不想更改原始div,可以复制容器。

var html="";
$(function () {
 var newHtml = $("#top_container").clone();
 $(newHtml).find(".example").replaceWith(function () {
   html+= "%^%" + $(this).text();
   });
});

console.log(html);

答案 2 :(得分:2)

创建一个原型,如:

String.prototype.replaceAll = function (toReplace, replaceWith){
    return this.split(toReplace).join(replaceWith);
}

你的jquery代码如下:

  $("div#top_container").each(function( i ) {debugger;
    console.log(this.innerHTML.replaceAll('<div class="example">','*%^%').replaceAll('</div>',' ');)
  });