2012-01-07 7 views
4

特定のプロパティ名用のカスタムイベントで自分のデータを食べます。これは何かが期待している?プロパティをコピーする元のイベントがないので、私はそれが問題であることを発見しました。また、サーバーの応答を送信するためにプロパティ名が不足しています。jQueryのは、これを行う場合は

REF:​​

REF:http://api.jquery.com/category/events/event-object/

注文書のは、この動作を説明します。何故か、なぜjQueryのソースコードから説明すればそれは素晴らしいでしょう。予期せぬことがあればバグを報告することができます。およそ

$(document).on('myevent',"body",function (ev,x) { 
    console.log(x.data); 
    console.log(x.result); 
    } 
); 
$(document.body).trigger('myevent',{data:'foo',result: 'bar'}); 

http://jsfiddle.net/ZbBAh/17/

答えて

5

ev.dataプロパティは.on()コールに渡されるデータであり、それはnullを返すように、渡されたものがないか

+0

実際にこれを行った 'jquery.js'の実際の行番号を見つけることができますか? – timdream

+0

https://github.com/jquery/jquery/blob/master/src/event.js#L447 –

5

$.Eventへの呼び出しで追加したデータプロパティは、nullによって上書きされます。カスタムデータ名のために、ここで言及した任意のプロパティ名を使用しないでください: http://api.jquery.com/category/events/event-object/

+1

ありがとうございます(+1)、余分なプロパティの2番目の引数があることを十分に認識しています。私はちょうどこの方法が嫌いです。 – timdream

0

私はこれが役立つことがありますか分からないが、少なくとも一度、私はこのようになります混合コードで自分自身を発見した:

... .trigger('myevent', $.Event('myevent', {data: 'foo',result: 'bar'}))' 

つまり、イベント名を.triggerのパラメータとして提供し、イベントオブジェクトにカスタムデータ**を提供します。カスタムデータ**。

コードは、どちらか

... .trigger($.Event('myevent', {data: 'foo',result: 'bar'}))' 

またはコースの

... .trigger('myevent', {data: 'foo',result: 'bar'})' 

彼らはあなたがあなたのイベントハンドラでデータを取得する場所では同一ではないが、少なくとも彼らは両方の仕事...

する必要があります
関連する問題