更新:答案适用于FILTER而不是......我不知道为什么。
这让我很难过。我到处搜索过,但我没有找到这个具体的问题,所以我发帖了。
我有一个应用程序,我填写了一些表格,然后通过jquery ajax提交到php文件,然后获取数据。当我得到数据时,我试图用另一个div包装每个.contentarea类,但是我无法让它工作。
这是我所拥有的
$(document).delegate('.moduleform', 'submit', function(event) {
event.preventDefault();
formData = $(this).serialize();
$.ajax({
type: "POST",
dataType: "text",
url: "layouts/" + folder + "/make-layout.php",
data: formData
}).done(function(data) {
$(data).filter('.contentarea').each(function(){
var html = $(this).html();
$(html).wrap('<div class="contentarea_container" data-module="freeform"></div>');
});
$('#container').append(data);
$('#load').dialog('close');
$('#loadContent').empty();
});
});
当我在console.log($(this));它看起来像是控制台中的一个对象。当我在console.log($(this).html());它看起来像HTML。但由于某种原因,我无法弄清楚如何用另一个div包装每个.contentarea。
我认为它与将数据转换为HTML并返回或类似的东西有关。我能够在数据变量中定位项目,但由于某种原因,我无法使包裹工作。请帮忙!
答案 0 :(得分:1)
.wrap
直接处理DOM。因此,您首先将data
附加到#container
,然后像这样调用.wrap
:
$(document).delegate('.moduleform', 'submit', function(event) {
event.preventDefault();
formData = $(this).serialize();
$.ajax({
type: "POST",
dataType: "text",
url: "layouts/" + folder + "/make-layout.php",
data: formData
}).done(function(data) {
var $data = $(data).appendTo('#container');
$data.find('.contentarea').wrap('<div class="contentarea_container" data-module="freeform"></div>');
$('#load').dialog('close');
$('#loadContent').empty();
});
});
演示:
var data = '<div><div class="contentarea">c</div></div><div><div class="contentarea">d</div></div>';
var $data = $(data).appendTo('#container');
$data.find('.contentarea').wrap('<div class="contentarea_container" data-module="freeform"></div>');
$('#out').text($('#container').html());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container">
<div>
<div class="contentarea">a</div>
</div>
<div>
<div class="contentarea">b</div>
</div>
</div>
<div id="out"></div>