使用$('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)。
我该怎么做?
答案 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>',' ');)
});