var test = { }
$(test).on("testEvent", function(){
console.log("testEvent has fired");
});
$.event.trigger("testEvent");
jQueryを使用してイベントを使用してパブリッシュ/サブスクライブメカニズムを実行しようとしています。私は非DOMオブジェクトにイベントをアタッチし、それらをすべて単一のグローバルトリガーから起動できるようにする必要があります。上記のコードは動作すると期待していましたが、テストオブジェクトのtestEventの起動には至りませんでした。
イベントがサブスクライブされる複数のオブジェクトが存在することに注意してください。単一の$ .event.triggerはそれらのイベントのすべてを起動する必要があります。このコードが正常に動作することを
に注意してください:最近のブラウザで
$('#someID').on("testEvent", function() {
console.log('testEvent has fired from DOM element');
})
$.event.trigger("testEvent");
イベントが発生しない理由は、オブジェクトがDOMの一部ではないためです。 $ .event.triggerを起動するとイベントが発生し、DOMをバブリングしています。オブジェクトはDOMの一部ではないので、それは起動しません。 私がここで真剣に探しているのは、DOM以外のオブジェクト内のイベントを何とかしてjQueryを使ってグローバルに起動することです。私はこれを達成するためにAmplifyJSのようなものを使う必要がないようにしようとしています。 – crv
投稿したイベントをトリガーする唯一の方法は '$(test).trigger(" testEvent ");'です。 –
要素を '$ .event 'に渡さない場合。トリガされ、トリガされているイベントはグローバルイベントではないため、イベントをトリガしません。 http://code.jquery.com/jquery-1.7.2.jsの3104行から始まるコードブロックを参照してください。これは文書化されていないメソッドなので、コードが何をしているかを見るためにはコードに行く必要があります。 –