jQuery对话框无法从后续数据表页面打开

时间:2012-09-28 13:31:50

标签: jquery pagination datatables

为我们的呼叫中心使用MVC 3应用程序显示保险保单持有人的数据。

我有一个页面,其保险索赔按数据表排序。表脚本是:

$('#claims').dataTable({
        "bProcessing": true,
        "bJQueryUI": true,
        "bPaginate": true,
        "bSort": false,
        "sPaginationType": "full_numbers",
        "sDom": '<"H"lrp>t<"F"ip>',
        "iDisplayLength": 10,
        "bAutoWidth": false,
        "oLanguage": { "sZeroRecords": "No claims found for this policy", 
                       "sProcessing": "<img src='../../../../Content/images/ajax-loader-bar.gif' />" },
        "aoColumns": [
            { "sName": "Claim #" },
            { "sName": "Status" },
            { "sName": "Clm Type" },
            { "sName": "Rider Form" },
            { "sName": "Primary DX" },
            { "sName": "Exam Code" },
            { "sName": "Asst Exam" },
            { "sName": "Case Mgr" },
            { "sName": "Follow Up Date" },
            { "sName": "Close/Deny Date" },
            { "sName": "Closed Reason" }
        ]

    });

其中一行包含一个按钮,用于打开一个对话窗口,其中包含有关该声明的详细信息。 javascript就是这样:

$(function () {

        $('#ClaimsDetailDialog').dialog({
            autoOpen: false,
            width: 950,
            resizable: true,
            modal: true,
            position: ['center', 'top']
        });

        $('.claimmodal').on("click", function () {
            var url = $(this).attr('href');
            var claimnum = $(this).text();
            var policynum = $(this).attr('polnum');
            $('#ClaimsDetailDialog').html("<img src='../../../../Content/images/ajax-loader-bar.gif' />")
                .dialog("option", "title", "Claim Details for Claim #" + claimnum + " for Policy #" + policynum)
                .dialog("option", "buttons", {
                    Close: function () {
                        $(this).dialog("close");
                    }
                })
                .load(url).dialog("open");
            return false;
        });
    });

这项工作正常,直到有超过10项针对某项政策的声明。用户单击第二页后,单击声明编号不再打开对话框,而是打开窗口到请求的URL,没有javascript标记。

以下是有关细胞的剃刀:

<td style="text-align: center">
    @Html.ActionLink(@item.Claimmast.CLMNO.ToString(), "ClaimDetail", null, new { id = item.Claimmast.ID }, new { @class = "claimmodal", polnum = item.Claimmast.POLICY }) 
</td>

1 个答案:

答案 0 :(得分:1)

您需要使用委托,因为您正在动态更改dom ..

$('#claims').on('click','.claimmodal',function(){
    // your code here
});

取决于您使用的jQuery版本

$(selector).live(events, data, handler);                // jQuery 1.3+
$(document).delegate(selector, events, data, handler);  // jQuery 1.4.3+
$(document).on(events, selector, data, handler);        // jQuery 1.7+