> What exactly do you mean when you say the handler doesn't know which
> argument is passed via trigger versus bind? Can you give me an example
> of this so I can better understand the problem?
I try. I take my tooltip plugin as an example, because I can avoid binding
stuff to DOM elements.
Currently, the individual tooltip settings are saved as a property on each
tooltipped element:
.each(function() {
this.tSettings = settings;
})
That is ugly and may leak memory. Therefore I'd change to current bind to pass
the settings:
.bind(mouseover, handle, settings);
Inside my "handle" function, I could now access the settings, and change this:
handle = function(event) {
if( this.tSettings.delay ) [...]
to:
handle = function(event, settings) {
if( settings.delay ) [...]
So far so good, but now I have an additional requirement: I need to trigger the
handle event when I want to display the tooltip, eg. to display a message for
an invalid form element. Because the event's mouse position can't be used to
position the element, I need to pass an additional argument to indicate the
position where the tooltip should appear.
Something like this:
$(invalidElement).trigger("mouseover", objectWithPositionInformation);
To rewrite my handler:
handle = function(event, settings, triggerOption) { ...
Now what if the handler is used with another event, and no "settings" is
passed? How to decide what inside which parameter?
I'd prefer a solution where this question is absolutely clear. One solution
would be to put that data into the event object:
handle = function(event) {
// use event.bind to access settings, use event.trigger to access
triggerOption...
The big drawback: That additional data has to be cleared after the handler was
executed to prevent memory leaks. But that can pose a problem when the data is
accessed inside a closure...
I hope that makes the problem clear. Any ideas?
--
Jörn Zaefferer
http://bassistance.de
--
"Ein Herz für Kinder" - Ihre Spende hilft! Aktion: www.deutschlandsegelt.de
Unser Dankeschön: Ihr Name auf dem Segel der 1. deutschen America's Cup-Yacht!
_______________________________________________
jQuery mailing list
[email protected]
http://jquery.com/discuss/