Reputation: 55
I know it is better coding practice to avoid inline javascript like:
<img id="the_image" onclick="do_this(true);return false;"/>
I am thinking about switching this kind of stuff for bound jquery click events like:
$("#the_image").bind("click",function(){
do_this(true);
return false;
});
Will I lose any performance if I bind a ton of click events? I am not worried about the time it takes to initially bind the events, but the response times between clicking and it happening.
I bet if there is a difference, it is negligible, but I will have a ton of functions bound. I'm wondering if browsers treat the onclick attribute the same way as a bound event.
Thanks
Upvotes: 4
Views: 655
Reputation: 25159
Save yourself the worry, use the on event
$("#the_image").on("click",function(){
do_this(true);
return false;
});
One event, with no performance hit with multiple items.
Upvotes: 2
Reputation: 19334
The difference is negligible. If you have to bind to many items in the page, there can be a performance hit, and you may want to bind to a higher level object, and simply intercept the target item (image) where you are binding the click to a containing DIV tag. Other than that, it should be fine and will depend on your use case specifically.
Look into event bubbling in javascript for more specifics.
Upvotes: 0
Reputation: 877
In my work, it depended. I moved all of my events to jquery. Then I profiled the javascript using FireBug to see what was taking the longest. Then I optimized those taking the longest.
If its just a few, you won't notice any degradation. If its hundreds or thousands, then you might.
Upvotes: 1