Javascript
Event dispatching with jQuery
Gabor and I did some thinking and coding. This is an other way to handle your events
The script
beneath you will find a plugin for jQuery
/* * Distill * a extremely fast event handling solution * written by: * Gabor de Mooij * Robert Cabri */ $.distill = function(evType,obj) { var dispatcher = function(ev,et,handler) { try{ var classes = []; var clsStr = $(ev.target || ev.srcElement).attr("class"); if (clsStr.indexOf(" ")>-1) { classes = clsStr.split(" ") } else { classes = [clsStr]; } for (var j in classes) { var hname = classes[j].replace(/com_/,''); if (handler[hname]) { if (handler[hname][et]) { handler[hname][et](ev,et); } } } }catch(e){} } var evTypes; if (evType.indexOf(",") > -1) { evTypes = evType.split(","); } else { evTypes = [evType]; } for(var j in evTypes) { $("body")[evTypes[j]]((function(evt){ return function(e){ dispatcher(e,evt,obj); } })(evTypes[j])); } }
Usage
To use this script you need the jQuery library! See a working version
<html> <head> <title> </title> <script src="jquery-1.2.1.js"></script> <script src="distill.js"></script> <script> //test //attach a keyup and a select handler to the textarea window.onload = function () { $.distill("keyup,select,click",{ myobj :{ select:function() { alert("textarea 1 select"); }, keyup: function() { alert("textarea 1 keyup"); } }, myobj2: { click: function() { alert("textarea 2 click"); }, keyup: function() { alert("textarea 2 keyup"); } } }); } </script> </head> <body> <textarea class='bla com_myobj'>text 1</textarea> <textarea class='com_myobj2'>text 2</textarea> </body> </html>