13

カスタムJavascriptイベントを作成しようとしています。イベントは正常に機能して発生しますが、渡した「detail」オブジェクトは使用できません。

イベントの作成とディスパッチに使用しているコードは次のとおりです。

var double_tap = new CustomEvent("doubleTap", {
    detail: {
        hello: 'world'  
    },
    bubbles: true,
    cancelable: true
});

this.dispatchEvent(double_tap);

次に、jQueryを使用してイベントリスナーを本文に追加しています。

$('body').on('doubleTap', function( e ) { 
    console.log(e);
});

起動し、コンソールログが発生しますが、残念ながら、ログにはバブルやキャンセル可能なプロパティなどのイベントの詳細のみが出力され、「detail」オブジェクトは出力されないため、情報にアクセスできません。

これが例としてのjsbinです。コンソールが表示されるように、本体のクリックイベントでイベントを作成しています。http://jsbin.com/looseroots/6

イベントが発生したときに「detail」オブジェクトからデータを取得できるようにしたいと思います。私は何が間違っているのですか?私はこれをChromeとiOSのSafariでテストしました。

4

3 に答える 3

17
obj.addEventListener("eventName", function(e) {
console.log(e.your_property)
})

var event = new CustomEvent("eventName");
event.your_property = { key: "value" };

obj.dispatchEvent(event);

送信するときに、CustomEvent でプロパティを作成できます。

于 2016-02-10T15:42:09.190 に答える
13

詳細については、originalEvent プロパティにアクセスする必要があります

console.log(e.originalEvent.detail);
于 2012-11-11T18:03:09.603 に答える
2

次のコミットを見つけました: https://github.com/jquery/jquery/commit/a90ff8c8c79bfcc32afd340a12f016f20a31d8b6

この修正は jQuery のcompatブランチにあり、jQuery 3.0 で修正される必要があります。

于 2015-02-05T05:16:09.500 に答える