javascript - Jquery mouse events don't fire -
i have strange problem. example code works [here][1] quiet fine, have same code in aptana studio editor , when try in chrome or eclipse browser events don't fire. can't imagine what's problem, because it's same code ...
html
<!doctype html> <html> <head> <title>orderscreen</title> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script src="js/script.js" type="text/javascript"></script> </head> <body> <a href="">test</a> </body> </html> jquery
$("a").mouseup(function() { cleartimeout(presstimer); // clear timeout return false; }).mousedown(function() { // set timeout presstimer = window.settimeout(function() { alert("hcbdhaf") }, 1000); return false; }).click(function() { alert("dfsdg"); });
if code quoted, problem elements don't exist of when try hook event handlers them. jsfiddle's default settings hide problem you. (look on left, , you'll see code isn't run until load event fires — very, late in page load process.)
to fix it, either:
move script tags end of document, before or after closing
</body>tag. time browser runs script, elements exist. recommendation of yui team , google's web engineers like too.use jquery's
readyevent.
in conjunction either of those, might @ using event delegation instead of directly hooking events on elements. mouseup , mousedown handlers attached each a element individually. that's lot of hookups. if there's container of a elements in (body or better yet, nearer), might instead hook event on container (since events bubble) , check see if event originated in a element. jquery supports event delegation, doing of hard work you, via delegate (which because it's explicit) , more recently, 1 of half-dozen variations of arguments pass on.
Comments
Post a Comment