查看
<a class="dialogLink" href="/Home/OpenDialog">OPen Dialog</a>
部分视图
<div id="dlgReport"><input type="button" id="closeDialog" value="Close"/></div>
控制器
public ActionResult OpenDialog(ViewModel model){
//setting value
return PartialView(model);}
Jquery代码
$(function () {
$.ajaxSetup({ cache: false, async: false });
$('.dialogLink').live('click', function () {
var dialogId = 'uniqueName-' + Math.floor(Math.random() * 1000)
var dialogDiv = "<div id='" + dialogId + "'></div>";
var data = $('form').serialize();
$.post(this.href, data)
.success(function (result) {
$(dialogDiv).html(result).dialog({
autoOpen: true,modal: true,title: 'Test',
open: function () {
$('#closeDialog').bind('click', function (e) {
//debugger;
$(".ui-dialog-content").dialog().dialog("close");
});}});})
return false;});});
一切正常,当我点击链接按钮(打开对话框)时,一个帖子请求将转到控制器,填充数据并将数据传递给局部视图和部分视图加载自定义“关闭对话框”按钮。 / p>
首次单击“关闭对话框”按钮,关闭对话框,但是当我再次加载对话框时,“关闭对话框”将无效。
我用调试器检查,第二次,
('#closeDialog')。bind('click',function(e){
没有打电话,不知道这里有什么不对。请指教!谢谢!注意 - 如果我使用代码“ $(this).dialog('close'); ”而不是“ $(”。ui-dialog-content“)。对话框()。dialog(“关闭”); “,然后我点击”关闭对话框“按钮从第一次开始收到未知错误。
答案 0 :(得分:0)
您可能无法多次绑定该事件。 尝试
$(function () {
$.ajaxSetup({ cache: false, async: false });
$('.dialogLink').live('click', function () {
var dialogId = 'uniqueName-' + Math.floor(Math.random() * 1000)
var dialogDiv = "<div id='" + dialogId + "'></div>";
var data = $('form').serialize();
$.post(this.href, data)
.success(function (result) {
$(dialogDiv).html(result).dialog({
autoOpen: true, modal: true, title: 'Test',
open: function () {
$('#closeDialog').unbind('click', fnBindClick);
$('#closeDialog').bind('click',fnBindClick);
}
});
})
function fnBindClick(e) {
//debugger;
$(".ui-dialog-content").dialog().dialog("close");
}
return false;
});
});
答案 1 :(得分:0)
最后,我从其他堆栈溢出线程得到答案,我们需要清空并删除对话框,
$(function () {
$.ajaxSetup({ cache: false, async: false });
$('.dialogLink').live('click', function () {
var dialogId = 'uniqueName-' + Math.floor(Math.random() * 1000)
var dialogDiv = "<div id='" + dialogId + "'></div>";
var data = $('form').serialize();
$.post(this.href, data)
.success(function (result) {
$(dialogDiv).html(result).dialog({
autoOpen: true,modal: true,title: 'Test',
open: function () {
$('#closeDialog').bind('click', function (e) {
//debugger;
$(".ui-dialog-content").dialog().dialog("close");
$(this).empty();
$(this).remove();
});}});})
return false;});});