NyroModal没有正确关闭

时间:2012-01-27 02:17:25

标签: jquery nyromodal

以下是代码示例。

$(".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 个答案:

答案 0 :(得分:1)

如果你查看调试版本,我通过添加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');
        }

答案 1 :(得分:0)

为了完整性,请执行@Sparkx所做的事情,但后来又出现了一个错误,即“TypeError:nm.elts.cont is undefined”。要解决此更改:

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);