如何更改Bootstrap Modal div的data-url属性?

时间:2014-05-26 16:56:16

标签: jquery asp.net-mvc twitter-bootstrap

我正在使用模态将过滤器应用于数据表。可以应用许多过滤器,因此每次用户单击"添加过滤器"时,模态窗口需要知道以前的过滤器。我通过查询字符串参数执行此操作,因此每次用户单击"保存更改"在模态窗口中,我需要更新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参数。

这样做的最佳方式是什么?

0 个答案:

没有答案