Is there any difference between the following code?
$('#whatever').on('click', function() {
/* your code here */
});
and
$('#whatever').click(function() {
/* your code here */
});
clickjquery
Is there any difference between the following code?
$('#whatever').on('click', function() {
/* your code here */
});
and
$('#whatever').click(function() {
/* your code here */
});
Best Answer
I think, the difference is in usage patterns.
I would prefer
.on
over.click
because the former can use less memory and work for dynamically added elements.Consider the following html:
where we add new buttons via
and want "Alert!" to show an alert. We can use either "click" or "on" for that.
When we use
click
with the above, a separate handler gets created for every single element that matches the selector. That means
When we use
.on
with the above, a single handler for all elements that match your selector, including the ones created dynamically.
...another reason to use
.on
As Adrien commented below, another reason to use
.on
is namespaced events.If you add a handler with
.on("click", handler)
you normally remove it with.off("click", handler)
which will remove that very handler. Obviously this works only if you have a reference to the function, so what if you don't ? You use namespaces:with unbinding via