2012-01-27 12 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

デバッグバージョンを見れば、私は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

@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); 
この変更を修正するには
関連する問題