2017-05-02 11 views
0

後でクリックイベントを発生させる小さなウィジェット(GETメソッド)を読み込むjQueryプラグインをプログラミングしています。jQueryプラグイン - グローバルセレクタの動的クリック処理

プラグインを初期化するときに、要素セレクタがDOMにないことがあります。では、どのようにしてセレクタをクリックしてイベントを処理するためのグローバルな格納を行うことができますか?

私はあなたに理解しやすいようにコードを簡潔にしています。

(function($) { 
    var $template; // the global variable 

    $.fn.myPlugin = function() { 
     $(this).bind('click', function(e) { 
      $.get('/template.html', function(data) { 
       $('body').append(data); 
       $template = $(data); // set global variable here 
      } 
     } 

     // fire click event on global variable here, but $template is undefined 
     $(document).on('click', $template.find('.button'), function() { 
      // do something 
     } 
    } 
})(jQuery); 

ありがとう!

答えて

0

テンプレートが既にロードされていることが確実である場合、コールバックにイベントハンドラを定義するだけです。

(function($) { 
    var $template; // the global variable 

    $.fn.myPlugin = function() { 
     $(this).bind('click', function(e) { 
      $.get('/template.html', function(data) { 
       $('body').append(data); 
       $template = $(data); // set global variable here 
       // fire click event on global variable here, but $template is undefined 
       $(document).on('click', $template.find('.button'), function() { 
       // do something 
       } 
      } 
     } 
    } 
})(jQuery); 
+0

私はすでにそれについて考えましたが、別の方法ではないので、後でセレクタを使用できますか?とにかく助けてくれてありがとう! – pixelmusic

+0

本当にそのブロックにハンドラを置かない場合は、 'Promise'を使ってフェッチを行い、次に' .then() 'を使ってハンドラを初期化することができます。 – kennasoft

関連する問題