thanks very much Richard for this clarification. this 'ui' parameter sounds like it's really for API specific data rather than user data (i.e. lastname, firstname). from reading the documentation, it lead me to believe that this is for passing user data into the dialog object. so should i still be just using the jQuery .data() mechanism to pass around data then?
thanks, On Jan 17, 4:04 am, "Richard D. Worth" <rdwo...@gmail.com> wrote: > This was actually documentation of an unintended behavior (a bug). I've gone > ahead and removed that line. A bit of background first: > > All jQuery UI plugin callbacks follow the same pattern. They receive two > arguments. We call these 'event' and 'ui'. > > callback 'event' argument > The first argument (event) is the plugin event which triggered the callback. > In the case of dialog open, that would be the 'dialogopen' event. This also > will contain detail about the original browser event that triggered this > plugin event. For example you can close a dialog by pressing the Esc key > (keypress) or by clicking a close button (click). > > callback 'ui' argument > The second argument (ui) is a bag of data (a hash) that contains useful > information that pertains to that particular event that is either not > accessible or not convenienyl accessible through other API calls. For > example, if you are doing drag and drop, in the drop callback of a > droppable, you need a handle to the draggable element which is being > dropped. So we provide that in ui.draggable. Here's a code example > > $("#draggable").draggable(); > $("#droppable").droppable({ > drop: function(event, ui) { > var drp = $(this); > var drg = $(ui.draggable); > drp.append(drg.text()); > } > > }); > > So $(this) is the droppable element being dropped on. And $(ui.draggable) is > the draggable element being dropped. Notice how this is specific to this > particular instance of the drop event callback? The next time an element is > dropped (and this callback is triggered), it might be a very different > draggable element, so it wouldn't make sense to have this as an option api > call, for example, like > > var drg = $(this).droppable("option", "draggable") // not logical or > supported - use $(ui.draggable) instead > > So that's why we have these two arguments on every jQuery UI callback > function - 'event' and 'ui'. > > Back to your specific question about why dialog open's 'ui' argument was > documented as containing the options object: > > In 1.5.3, each callback 'ui' argument contained at least one property call > ui.options. This contained the current plugin options like you pass to init, > like > > var options = { modal: true, autoOpen: false }; > $(el).dialog(options); > > This created an API hole. By supplying the options collection, the user > could actually make a change to plugin options in a callback function > without going through the api. So you could do something like > > $(el).dialog({ > open: function(event, ui) { > ui.options.width = 650; // bad - doesn't use the API > } > > }); > > This is bad because without using the API, the plugin wouldn't be aware of > that change, and it couldn't react accordingly. Another reason for removing > this ui.options is it created an additional way of getting the same > information. As I mentioned before, the ui parameter should only contain > data that is relevant to this specific instance of this specific event > callback, that can't be had coneniently through an existing API. In the case > of dialog.options.width, there's already an API for getting and setting that > > $(el).dialog({ width: 300 }); // init dialog with width 300 > var width = $(el).dialog("option", "width"); // get dialog width after init > $(el).dialog("option", "width", 650); // set dialog width after init > > So I just checked and currently (1.6rc5) there is no data passed in the 'ui' > argument to either the dialog open or dialog close callbacks. So this sits > as a placeholder. If we ever have to pass any relevant data to these > callbacks, we'll put it in that hash and document it. Here's an examples of > documented 'ui' argument hash contents: > > http://docs.jquery.com/UI/Draggable/draggable#options > > * ui.helper - the JQuery object representing the helper that's being dragged > * ui.position - current position of the helper as { top, left } object, > relative to the offset element > * ui.absolutePosition - current absolute position of the helper as { top, > left } object, relative to page > > - Richard > > On Sat, Jan 17, 2009 at 3:01 AM, niner <jyi...@gmail.com> wrote: > > > is there an example of data passing using the "open" option in jQuery > > UI dialog? the documentation states that > > > "The data passed is the opened dialog options object." > > > but how does that work exactly in code? > > > thanks, --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "jQuery UI" group. To post to this group, send email to jquery-ui@googlegroups.com To unsubscribe from this group, send email to jquery-ui+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/jquery-ui?hl=en -~----------~----~----~----~------~----~------~--~---