javascript - Add event listener to all objects except for a few selected? -
i'm trying add event listener objects except few selected(the selected have arbitrary child elements in arbitrary levels)?
i have asked question before, didn't got answer it. have came close solve it. please me debugging it?
i'm adding event listener body element called bodylistener , event listener few selected elements called selectedelementsmarktrue. few selected elements don't want execute code, listener selectedelementsmarktrue performs pior bodylistener settimeout function. selectedelementsmarktrueset variable selectedelements true , bodylistenerchecks if selectedelementsis truebefore execute som code. there still wrong code
var selectedelements = false; var bodylistener = function(){ window.settimeout(function(){//setting timeout other handler, selectedelementsmarktrue, performs first (function(){ if(selectedelements == false){ //do stuff }else{ selectedelements = false; } }); }, 10);//could 0, te sure set 10 }; var selectedelementsmarktrue = function(){ selectedelements = true; }; $('#dontaddeventlistener1, #dontaddeventlistener2').each(function(){ this.addeventlistener('click', selectedelementsmarktrue, false); }); document.body.addeventlistener('click', bodylistener, false); i can't settimeout function execute underlying code?
sounds want behavior this:
<!doctype html> <html> <head> <meta charset="utf-8"> <title></title> <script> window.addeventlistener("domcontentloaded", function() { document.body.addeventlistener("click", function(e) { var el = e.target; { if (el.hasattribute && el.hasattribute("data-nofire")) { return; } } while (el = el.parentnode); alert('do stuff'); }, true); }, false); </script> </head> <body> <p><span>click me</span></p> <p data-nofire><span>click me</span></p> <p data-nofire>click me</p> <p>click me</p> </body> </html> or, naren suggested:
<!doctype html> <html> <head> <meta charset="utf-8"> <title></title> <script> window.addeventlistener("domcontentloaded", function() { var nofire = document.getelementsbyclassname("nofire"); (var = 0; < nofire.length; ++i) { nofire[i].addeventlistener("click", function(e) { e.stoppropagation(); }, true); } document.body.addeventlistener("click", function(e) { alert('do stuff'); }, false); }, false); </script> </head> <body> <p><span>click me</span></p> <p class="nofire"><span>click me</span></p> <p class="nofire">click me</p> <p>click me</p> </body> </html>
Comments
Post a Comment