Now let's try to simplify this a bit : $('a.c_update').each(function() { var $a = $(this); var q = $a.attr('id'); $a.bind("click", function() { doStuff('getitem',q); // hmm, I don't like this variable much... return false; }); });
$('a.c_update').each(function() { var $a = $(this); $a.bind("click", function() { doStuff('getitem', $a.attr('id');); // there, no need return false; }); }); $('a.c_update').each(function() { var $a = $(this); $a.bind("click", function() { // wait, if I've bound my event to the link, why bother keep it as a variable before ? doStuff('getitem', $a.attr('id');); // there, no need return false; }); }); $('a.c_update').each(function() { $(this).bind("click", function() { // feels better doStuff('getitem', $(this).attr('id');); return false; }); }); $('a.c_update').each(function() { // hey, why bother looping, I could do it all with the .bind() function on the whole collection anyway $(this).bind("click", function() { doStuff('getitem', $(this).attr('id');); return false; }); }); $('a.c_update').bind("click", function() { // how sleaker doStuff('getitem', $(this).attr('id');); return false; }); So, basically you can reduce #1 to #2 breaking nothing, without any significan loss (in fact I think it's a net gain). Michel Belleville 2009/11/27 Bruce MacKay <thomasba...@gmail.com> > Hello folks, > > I have some html returned via ajax that contains several 'a' tags to > which I am binding a function. > > Both of the following methods does the job, but my perception of other > posts about this general practice from more wiser folk than me is that > the first method is the "better" method. Is this the case? Which is > the "best" method - and more importantly, why? > > method #1 > $('a.c_update').each(function() { > var $a = $(this); > var q = $a.attr('id'); > $a.bind("click",function() {doStuff('getitem',q);return > false;}); > }); > > method #2 > $('a.c_update').bind("click",function() {doStuff > ('getitem',this.id);return false;}); > > Thanks, > Bruce >