3

サイトの複数のページで使用されている、かなり大きくて複雑な JavaScript モジュールがあります。少し検索していじった後、モジュールの関数の 1 つが特定のページで実行されたときに追加のコードを実行するために、次の構造を思いつきました。

// within module definition that is used across multiple pages
function some_module_method(){
  $.event.trigger( 'custom_event' );
}

// bit of functionality that I'm trying to add to a single page
$( '#some-element' ).on( 'custom_event', function(){
  console.log( 'The custom event has just been triggered!' );
} );

私が抱えている問題の 1 つは、このイベントが 1 回だけトリガーされることを期待しているときに、2 ~ 4 回続けてオフになることです。これは、このイベントをトリガーしてアタッチするために使用している上記の構造の問題ですか、それともおそらく他の何かですか?

また、DOM オブジェクトを参照せずに関数をイベントにアタッチするにはどうすればよいですか? $.on() を使用するだけでは機能しません。

これは、スタック オーバーフローに関する私の最初の投稿です。皆さんは素晴らしいリソースです。このコミュニティに恩返しをしたいと思います。

4

2 に答える 2

2

最初の問題については、例を見ずに言うのは少し難しいです。そして、私は間違っている可能性がありますが、 $.trigger() はあなたが使用しているようには機能しないと確信しています。jQuery オブジェクトにアタッチする必要があります。$().trigger().

2 番目の質問については... DOM 要素を正確に使用する必要はありませんが、のような空の jquery オブジェクトを使用できます$({}).on()このフィドルを参照してください。

これが役立つことを願っています。

余談ですが、jQuery オブジェクト メソッドとコア メソッドを混同している可能性があります。念のため、ここに少し情報があります。

于 2012-11-04T07:50:00.723 に答える
1

使用する

$('#some-element').trigger('custom_event');

それ以外の

$.trigger('custom_event');
于 2012-11-04T07:57:45.977 に答える