2012-09-28 22 views
0

使用MVC 3應用程序爲我們的呼叫中心顯示保險單持有人的數據。jQuery對話框不能從隨後的數據表中打開頁面

我有一個頁面,保險索賠排序在一個數據表。該表的腳本是:

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

您需要使用委派,因爲你是動態改變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+ 
+0

非常感謝。仍然是網絡開發的新手,所以我對動態事件處理模糊不清。我會盡快將其標記爲 –

+0

歡迎您。每當你動態改變dom的時候。你應該總是將你的事件處理程序附加到dom中靜態父元素的元素上。然後,他們會聽到這個事件,因爲他們泡在樹上 –

相關問題