我有以下代码:
$('#refresh').click(function () {
alert($('.report-container').length);
$('.report-container').each(function () {
var accordian = this;
var url = $(this).children(':first-child').val();
$('form').ajaxSubmit({
url: url,
success: function (responseText, statusText, xhr, $form) {
$(accordian).html(responseText);
}
});
});
});
这基本上会获取页面上的每个表格报告,并使用用户配置的表单刷新它们。
我希望这可以用从服务器下载的片段替换唯一的'.report-container'元素。但每次运行时,对alert($('.report-container').length);
的调用会增加吗?
这导致了各种各样的问题 - 我缺少什么?
ftr我也试过在ajaxForm插件上使用target属性,结果相同
我还可以确认服务器响应片段中只有一个'.report-container',因此它应该是1 - > 1替换。
答案 0 :(得分:1)
要使用.replaceWith()
替换元素。
html()
替换元素的内容。所以在更换后你会得到:
<div class="report-container">
<div class="report-container">
....
</div>
</div>
答案 1 :(得分:1)
如果你真的只有一个容器,它将被替换:
$('#refresh').click(function() {
var container = $('.report-container');
var url = container.children(':first-child').val();
$('form').ajaxSubmit({
url: url,
success: function(responseText, statusText, xhr, $form) {
container.replaceWith(responseText);
}
});
});
如果您希望扩展到多个,请保留/添加每个,但将选择缓存在“accordian”中:
$('#refresh').click(function() {
$('.report-container').each(function() {
var accordian = $(this);
var url = accordian.children(':first-child').val();
$('form').ajaxSubmit({
url: url,
success: function(responseText, statusText, xhr, $form) {
accordian.replaceWith(responseText);
}
});
});
});