2012-01-27 55 views
0

下面是示例代碼。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 is undefined

回答

1

如果你看看調試版本,我加入了用於測試的應急定位發射器的存在解決了這個問題。

 _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

出於完整性做什麼@Sparkx做,但後來我有一個更多的錯誤,是「類型錯誤: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);