NyroModal не закрывается правильно - PullRequest
0 голосов
/ 27 января 2012

Вот пример кода.

$(".remove.group").live("click", function (ev) {
    var button = $(ev.currentTarget);
    var action = button.get(0).dataset["action"];
    var method = button.get(0).dataset["method"];
    var modal = $("#remove");
    modal.find(".primaryaction").bind("click", function (e) {
        $.ajax({
            url: action,
            type: method,
            dataType: "xml",
            success: function (rawResponse, status, xhr) {
               //some business logic
                $.nmTop().close();
            },
            error: function (xhr) {
                console.log(arguments);

                var message = "Could not remove group";
                alert(message);
                $.nmTop().close();
            }
        });
    });
    modal.find(".cancelButton").bind("click", function (e) {
        $.nmTop().close();
    });
    $.nmManual("#remove");

    return false;
});

Я использую nyroModal и jQuery здесь.

Все события кликов работают нормально в первый раз. Но если я снова открою модал и нажму на любую из кнопок, то nyroModal выдает ошибку:

this.elts.cont не определено

Ответы [ 2 ]

1 голос
/ 24 февраля 2012

Если вы посмотрите на отладочную версию, я решил эту проблему, добавив тест на существование elts.

       _unreposition: function() {
            if (this.elts.length) {
               this.elts.cont.css('overflow', '');
               var elts = this.elts.all.find('.nmReposition');
               if (elts.length)
                   this.elts.cont.append(elts.removeAttr('style'));
            }
            this._callFilters('afterUnreposition');
        }
0 голосов
/ 07 ноября 2012

Для полноты сделайте то, что сделал @Sparkx, но потом у меня была еще одна ошибка, которая была «TypeError: nm.elts.cont не определена»Чтобы исправить это изменение:

hideCont: function(nm, clb) {
  nm.elts.cont.css('overflow', 'hidden').fadeOut(clb);

до:

hideCont: function(nm, clb) {
  if(nm.elts.cont) nm.elts.cont.css('overflow', 'hidden').fadeOut(clb);
...