Skip to content

Instantly share code, notes, and snippets.

@getify
Created September 14, 2010 21:50
Show Gist options
  • Save getify/579849 to your computer and use it in GitHub Desktop.
Save getify/579849 to your computer and use it in GitHub Desktop.
$("#foo").click(function(e){
if (e.clientX) {
// native mouse click
}
else {
// triggered mouse click
}
});
@jdalton
Copy link

jdalton commented Sep 15, 2010

Firing events can be used in cross-browser event delegation solutions to normalize inconsistent event bubbling.
Prototype uses DOM events, and their firing, to support custom event's that piggyback off of real events.
This has some advantages like if 1 handler fails the others will continue to execute.

instead, you could/should have bound two separate events to the same handler. that would accomplish the same goal and be a lot cleaner and more understandable/maintainable code.

You will end up having issues syncing the two events when one is told to stop bubbling and the other is unaware.
And what do you think would be used to fire these secondary custom events? That would be the same API you called evil :D

@getify
Copy link
Author

getify commented Sep 15, 2010

@jdalton - triggering events is definitely not evil. in my opinion, triggering a native event is bad. triggering a native event and pretending to be that native event with bogus information like fake mousex/mousey values is evil.

@krawaller
Copy link

@getify Indeed - as a general coding pattern, it's really bad practice. However, the solution is not to remove the support à la

i would consider that kind of code (and the ability to do it in JavaScript and jQuery, etc) wrong and evil

We shouldn't remove democracy just because it lets us do evil, right? ;)

@getify
Copy link
Author

getify commented Sep 16, 2010

@krawaller -- i mean, i understand your point. not necessarily saying it should be removed, but it should be avoided under almost all cases, just like what crockford says about the "good parts" and "bad parts" -- i definitely consider that a "bad part".

btw, there are some things that are so evil they should be removed... like "document.write"... my new banner: "document.write() must die". :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment