Посмотреть
<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;});});
Все работает хорошо, когда я нажимаю кнопку ссылки (Open Dialog), запрос на отправку отправляется на контроллер, заполняет данные и передает данные в частичное представление и частично просматривает пользовательскую кнопку "Закрыть диалог".
Сначала нажмите кнопку "Закрыть диалог", закройте диалоговое окно, но когда я снова загружу диалог, "Закрыть диалог" не будет работать.
Я проверяю с помощью отладчика, второй раз,
('#closeDialog'). bind ('click', function (e) {
не называется, не знаю, что здесь не так. Пожалуйста, предложите! Благодарю!
Примечание - ЕСЛИ я использовал код " $ (this).dialog(" закрыть "); вместо" $ (". Ui-dialog-content"). Dialog(). Dialog ("close"); ", затем Я получаю неизвестную ошибку с первого раза после нажатия кнопки "закрыть диалог".
Наконец, я получил ответ от другого потока, нам нужно очистить и удалить диалог,
$(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;});});
вы не можете связывать событие несколько раз. Пытаться
$(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;
});
});