2011-11-11 24 views
2

空白ボックスで確認ダイアログを実装しようとしています。私のjavascriptコードはモジュールに整理されています。呼び出される前に実行されるコールバック

私は、「ユーティリティ」と呼ばれるモジュール内部の確認ダイアログ機能を設定した

var Utility = (function() { 
    function confirm_dialog(title,msg,callback) 
     { 
      var html = '<div class="confirm-box">'+ 
         '<div class="confirm-title">'+title+'</div>'+ 
         '<div class="confirm-msg">'+msg+'</div>'+ 
         '<div class="confirm-buttons">'+ 
         '<button class="okBtn">Ok</button>'+ 
         '<button class="cancelBtn">Cancel</button>'+ 
         '</div>'+ 
         '</div>'; 
      var ret; 
      $.fancybox('<div class="confirm-dialog"></div>', 
      { 
       'width':400, 
       'height':250, 
       'content':html, 
       'modal' : true, 
       'transitionIn' : 'none', 
       'transitionOut': 'none', 
       'speedIn' : 300, 
       'speedOut' : 300, 
       'autoScale' : false, 
       'scrolling' : 'no', 
       'overlayShow' : true, 
       'overlayOpacity' : 0.3, 
       'overlayColor' : '#666', 
       'padding':10, 
       'onComplete':function() { 
        $('.okBtn').click(function(){ 
          ret = true; 
          $.fancybox.close(); 
         }) 
        $('.cancelBtn').click(function() { 
         ret = false; 
         $.fancybox.close(); 
        }) 
       }, 
       onClosed : function() { 
        if (typeof callback == 'function'){ callback.call(this, ret); } } 
      }); 
     } 
     return { dialog : confirm_dialog } 
})(); 

これは、イベントハンドラがコールバックをクリックしたら、ダイアログ

$('a.deletePheed').click(function(e) { 
          var id = $(this).parent('div.pheed-holder').attr('data-id'); 
         Utility.dialog('Delete Pheed','Are sure you want to delete this pheed ?', 
         PheedModule.delete_pheed()); 
          e.preventDefault(); 
         }); 

をトリガするイベントハンドラですダイアログが表示される前に直ちに起動され、確認ダイアログでokをクリックすると実行されません。 私は何を正しくしていませんか?

+0

1が終了し、次が始まると、それは明らかですので、コードの各行の末尾にセミコロンを使用してください。 – Blazemonger

答えて

1

私はあなたが使用しているすべてのものに慣れていないんだけど、あなたはおそらく匿名関数でPheedModule.delete_pheed()への呼び出しをラップする必要があります。

Utility.dialog('Delete Pheed','Are sure you want to delete this pheed ?', function() { 
    PheedModule.delete_pheed(); 
}); 
+0

チャームのように働いた...ありがとう – MrFoh

0

あなたはe.preventDefaultを(移動する必要があります)へメソッドの先頭 http://api.jquery.com/event.preventDefault/

$('a.deletePheed').click(function(e) { 
    e.preventDefault(); 
    var id = $(this).parent('div.pheed-holder').attr('data-id'); 
    Utility.dialog('Delete Pheed','Are sure you want to delete this pheed ?', 
    PheedModule.delete_pheed()); 
}); 
関連する問題