javascript - How do you dynamically assign a function to an element's onclick event? -
as opposed setting individual functions each element's click event, iterate elements , assign based on id or whatever?
document.getelementbyid('measure').onclick = function() { clickme(1); };   how approach this?
in past i've done along these lines:
var setclickonelements = function(selector) {     $(selector).each(function() {         $(this).click(function(event) {             // behaviour on click         });     }); };   ...where selector class selector, e.g. .my-class.  within callback passed each can @ other properties of selected elements, e.g. id etc.  if add class elements you'd set click function , call setclickonelements('.my-class'); on load, should go!
edit: above uses jquery. if you're restricted pure javascript, use 1 of methods described in john resig's post on implementations of getelementbyclass: http://ejohn.org/blog/getelementsbyclassname-speed-comparison/
here's example (using dustin diaz's method http://www.dustindiaz.com/getelementsbyclass):
var getelementsbyclass = function(searchclass,node,tag) {     var classelements = new array();     if ( node == null )         node = document;     if ( tag == null )         tag = '*';     var els = node.getelementsbytagname(tag);     var elslen = els.length;     var pattern = new regexp("(^|\\s)"+searchclass+"(\\s|$)");     (i = 0, j = 0; < elslen; i++) {         if ( pattern.test(els[i].classname) ) {             classelements[j] = els[i];             j++;         }     }     return classelements; }  var setclickonelements = function(classname) {     var elements = getelementsbyclass(classname);     (var = 0; < elements.length; i++) {         var element = elements[i];         element.onclick = function(event) {             // click behaviour here         };     } };      
Comments
Post a Comment