0

保険契約者のデータを表示するために、コールセンターのMVC3アプリケーションに取り組んでいます。

データテーブルに並べ替えられた保険金請求のページがあります。テーブルスクリプトは次のとおりです。

$('#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" }
        ]

    });

行の1つには、そのクレームに関する詳細を示すダイアログウィンドウを開くボタンが含まれています。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を超えるクレームが発生するまで、これは正常に機能します。ユーザーが2番目のページをクリックすると、クレーム番号をクリックしてもダイアログが開かなくなり、代わりに、JavaScriptマークアップなしで、要求されたURLへのウィンドウが開きます。

問題のセルのかみそりは次のとおりです。

<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>
4

1 に答える 1

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+
于 2012-09-28T13:37:00.807 に答える