Yes, but you can only add properties to the event object when triggering, not alter/extend it's data property.
$().bind('quack', {a:1}, function(e){ console.log(e.data.a); // 1 console.log(e.a); // 3 }); $().trigger({type: 'quack', data: {a:2}, a: 3}); You'd have to set a second data object in the event obj to safely iterate over. There is already a property for that, so this seems overcomplicated. You can already pass other data as arguments, extending .data on triggering simplifies it all, there's no need for 3 separate ways of passing data in. cheers -- ricardo On Jun 9, 8:59 am, Ariel Flesler <afles...@gmail.com> wrote: > I think it's ok the way it is now. e.data is for bind-time data and > the arguments are for trigger-time data. > > You can though pass a data object every time you trigger, that is, > passing it as the event object (must have type) then the data will be > copied to the event object you'll get. > > -- > Ariel Flesler > > On Jun 7, 12:14 pm, sks <simon.shep...@googlemail.com> wrote: > > > Hi, > > I'm a big fan of JQuery, it's totally changed the way I write > > Javascript. > > > One thing it's started to make me do is to use custom events a lot > > more but something that has struck me is that the event.trigger seems > > to be somewhat inconsistent with the rest of the api in terms of > > passing variables around. > > The specific piece that I'm taking about is the event.data, when you > > bind things, you can incorporate the data into the call e.g. > > > foo.bind("bar", {foo: bar}); - where foo becomes a property of > > event.data > > > but when I trigger things I have to do this: > > > foo.trigger("bar", [{foo: bar1}]) > > > and the extra data comes in as a second argument to the event being > > called. > > > While this is quite useful functionality, I feel it does depart > > somewhat from the original, I would expect to pass in an object that > > could extend and overwrite the original event.data object as well as > > being able to pass in extra arguments, so it might look something more > > like this: > > > foo.trigger("bar", {foo: bar1}, [{foo2: bar}]; > > > where the 2nd argument ({foo: bar1}) overwrites the original property > > ({foo: bar}) like > > jQuery.extend({}, event.data, latestData); > > > I was wondering if there is any specific reason it is done this way & > > whether there is anywhere I could suggest that it is altered? > > > Thanks > > > Simon --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "jQuery Development" group. To post to this group, send email to jquery-dev@googlegroups.com To unsubscribe from this group, send email to jquery-dev+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/jquery-dev?hl=en -~----------~----~----~----~------~----~------~--~---