I think I’ve been too much time looking at this function and just got stuck trying to figure out the nice clean way to do it.
It’s a jQuery function that adds a click event to any div that has a click CSS class. When that div.click is clicked it redirects the user to the first link found in it.
function clickabledivs() {
$('.click').each(
function (intIndex) {
$(this).bind("click", function(){
window.location = $( "#"+$(this).attr('id')+" a:first-child" ).attr('href');
});
}
);
}
The code simply works although I’m pretty sure there is a fairly better way to accomplish it, specially the selector I am using: $( "#"+$(this).attr('id')+" a:first-child" ). Everything looks long and slow. Any ideas?
Please let me know if you need more details.
PS: I’ve found some really nice jQuery benchmarking reference from Project2k.de here:
http://blog.projekt2k.de/2010/01/benchmarking-jquery-1-4/
Depending on how many of these
div.clickelements you have, you may want to use event delegation to handle these clicks. This means using a single event handler for all divs that have theclickclass. Then, inside that event handler, your callback acts based on whichdiv.clickthe event originated from. Like this:Fewer event handlers means better scaling – more
div.clickelements won’t slow down your event handling.