Пользовательский диалог jquery Кнопка «Закрыть» работает только при первой загрузке, а не при последующих загрузках. Почему?

0
  1. В моем приложении MVC 3 у меня есть кнопка ссылки, после щелчка на ней, частичная загрузка изображения в диалоговом окне jquery.

Посмотреть

   <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;});});
  1. Все работает хорошо, когда я нажимаю кнопку ссылки (Open Dialog), запрос на отправку отправляется на контроллер, заполняет данные и передает данные в частичное представление и частично просматривает пользовательскую кнопку "Закрыть диалог".

  2. Сначала нажмите кнопку "Закрыть диалог", закройте диалоговое окно, но когда я снова загружу диалог, "Закрыть диалог" не будет работать.

  3. Я проверяю с помощью отладчика, второй раз,

    ('#closeDialog'). bind ('click', function (e) {

    не называется, не знаю, что здесь не так. Пожалуйста, предложите! Благодарю!

Примечание - ЕСЛИ я использовал код " $ (this).dialog(" закрыть "); вместо" $ (". Ui-dialog-content"). Dialog(). Dialog ("close"); ", затем Я получаю неизвестную ошибку с первого раза после нажатия кнопки "закрыть диалог".

Теги:

2 ответа

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;});});
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;
            });
        });
  • 0
    спасибо за ваше решение, но это также не работает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню