2

カスタムイベントリスナーを追加します

$(document).on('customEvent', function(e, message) {
   message = 'Hello world';
});

他のどこかで私はそれをトリガーします:

var message = 'no message';
$(document).trigger('customEvent', message);
// I want here message to be `Hello world`

グローバル変数に割り当てずに、更新されたメッセージを取得する方法はありますか?

jQueryだけでWordPressフィルターAPIのようなものを作りたいです。

4

2 に答える 2

5

メッセージ文字列を渡す代わりに、メッセージ文字列をメンバーとして持つメッセージオブジェクトを渡します。

$(document).on('customEvent', function(e, messageObj) {
   messageObj.messageStr= 'Hello world';
});

var messageObj = {'messageStr':'initial Message'};
$(document).trigger('customEvent', messageObj );

トリガーで、オブジェクトのmessageStrメンバーを更新します。あなたはデータを持っているでしょう。

ただし、コードが非同期でないことを確認する必要があります。保険をかける唯一の方法は、トリガーからのコールバックを採用することです。

于 2013-02-22T18:26:49.207 に答える
2

すべてのJSコードをグループ化できる場合は、次のアプローチを使用できます。

(function() {
    $(document).on('customEvent', function(e, message) {
       sharedMessage = message;
    });
    ...
    var message = 'no message';
    $(document).trigger('customEvent', 'hello, world!');
}());

javascript変数は関数スコープであるため、varその関数内はグローバルではありません。そうでない場合は、衝突する可能性が低い独自の名前空間を作成できます。

var reallyunlikelytocollidenamespace = {};
reallyunlikelytocollidenamespace.message = 'no message';
...
于 2013-02-22T18:23:23.910 に答える