or how it's "slower".... say there's 100 <a> on the page (which wouldn't be too uncommon for say, a blog site), that's 100 event's wired up sitting in ready to "go"... using event delegation, one single event is wired up and if a user clicks somewhere (and really, how much clicking does a web page actually get?), it does a single if statement asking "was this a link?"
On Jan 23, 10:52 am, Amos King <amos.l.k...@gmail.com> wrote: > Greg, I'm not sure how your's is much diffrent then the original. > > On Sat, Jan 23, 2010 at 7:04 AM, Greg Tarnoff <greg.tarn...@gmail.com>wrote: > > > > > > > Actually all of these are slow. The last example will run anytime you > > click the page. You only want to run this if they click an A element. > > So attach a click event to A. Try this: > > > $(document).ready(function(){ > > $('a').click(function(){ > > alert($(this).attr('href');); > > }); > > }); > > only do the e.preventDefault(); if you don't want it to go somewhere. > > > I use this method all the time to get the HREF, always putting it into > > a variable, and affect the page. Usually for things like sliding > > panels. By putting in #myid it remains accessible when JS isnturned > > off. > > > On Jan 23, 4:30 am, Andrei Eftimie <k3liu...@gmail.com> wrote: > > > >> $(document).ready(function() { > > > >> $("a").click(function(event) { > > > >> alert( "You clicked a link to " + this.href ); > > > >> return false; > > > >> }); > > > >> }); > > > > This method is very slow. > > > > Try using event delegation: > > > > $(document).ready(function() { > > > $(document).click(function(event){ > > > if ($(event.target).is('a') { > > > alert( "You clicked a link to " + event.target.href); > > > return false; > > > } > > > }); > > > > }); > > > > -- > > > Andrei Eftimiehttp://eftimie.com+40758 833 281 > > > > Puncthttp://designpunct.ro > > -- > Amos Kinghttp://dirtyInformation.comhttp://github.com/Adkron > -- > Looking for something to do? Visithttp://ImThere.com