为我们的呼叫中心使用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>
答案 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+