7

JSでコールバックをネストする代わりに、自分のカスタムイベントを起動してリッスンしたいと思います。DOMにアクセスする必要はありません。次に例を示します。

function doSomething(){
//...
$.trigger('finished-doSomething'); //fire the event 'finished-doSomething'
}

//when the event 'finished-doSomething' is fired -> execute the function in the second  param 
$.live('finished-doSomething', function(){
   alert("I finished-doSomething");
});

通常のJavaScriptコードまたはjQueryのようなライブラリでそれを行うことは可能でしょうか?そうでない場合、ネストされたコールバックを回避するための良いアプローチは何ですか?

4

2 に答える 2

15

まあ、いくつかの共通要素でカスタム イベントを使用できますdocument.body

// Subscribe
$(document.body).on('nifty.event', function() {
    // Handle it
});

// Publish
$(document.body).trigger('nifty.event');

無償の実例| ソース

または、DOM から完全に切断するために、このようなpub/sub jQuery プラグインがいくつかあります。

于 2012-06-22T22:13:53.800 に答える
0
$('#foo').on('custom', function(event, param1, param2) {
  alert(param1 + "\n" + param2);
});
$('#foo').trigger('custom', ['Custom', 'Event']);

ソース: http://api.jquery.com/trigger/

于 2013-05-02T22:57:10.630 に答える