我正在使用模态将过滤器应用于数据表。可以应用许多过滤器,因此每次用户单击"添加过滤器"时,模态窗口需要知道以前的过滤器。我通过查询字符串参数执行此操作,因此每次用户单击"保存更改"在模态窗口中,我需要更新data-url属性。
这是模式:
<!-- Filter Table Modal -->
<div class="modal fade" id="modalFilter" tabindex="-1" data-url='@Url.Action("ApplyFilter", new { page = Model.PagingInfo.CurrentPage, sortOrder = Model.SortOrder, view = Model.View, encodedFilters = FilterHelper.EncodeFilterObject(Model.Filters) })' role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div id="modalFilterContainer"></div>
</div>
这是我发布到服务器并使用返回的数据更新页面上的HTML的jQuery代码:
$(document).on('click', '#saveFilterChanges', function (e) {
e.preventDefault();
var url = $('#formApplyFilters').attr('action');
$.post(url, {
ColumnName: $('#ColumnName').val(),
FilterOperator: $('#FilterOperator').val(),
Param1: $('#Param1').val(),
Param2: $('#Param2').val()
},
function (data) {
//replace page parts
$('#mainPageTable thead').replaceWith($(data).find('#mainPageTable thead'));
$('#mainPageTable tbody').replaceWith($(data).find('#mainPageTable tbody'));
$('#mainPageTablePager').replaceWith($(data).find('#mainPageTablePager'));
$('#sideBarInfo').replaceWith($(data).find('#sideBarInfo'));
$('#filterList').replaceWith($(data).find('#filterList'));
$('#phaseViews').replaceWith($(data).find('#phaseViews'));
var newUrl = $(data).find('#modalFilter').attr('data-url');
$('#modalFilter').prop('data-url', newUrl);
//hide filter
$('#modalFilter').modal('hide');
});
});
正如你所看到的,我尝试了一些不同的东西。最简单的测试是添加一个&#34;标题&#34;属性为模态div,并试图获得标题。这不起作用。所以我猜测Bootstraps JS代码对这个元素做了哪些事情阻止它在DOM中被访问?
编辑:前6&#34;替换&#34;调用(最多#phaseViews)工作正常,因此服务器的帖子正在工作并返回正确的数据。
基本上,我想从服务器获取在jQuery帖子中传回的新数据url,并更新页面上的模态div,以便更新新的encodedFilters参数。
这样做的最佳方式是什么?