I have 2 separate scripts that essentially do the same thing. I built them over time and just discovered I am using a couple different means to get to the same result.
I want to standardize and use the best practices method in both cases.
One way I test a change event is this:
$('input[name="status"]').change(function() {});
Another way I am testing a change event is this:
$("#email").bind("change", function(e) {});
Which way is best? What is the difference between the 2?
Thanks for helping me understand this.
Before jQuery 1.7,
change()was simply a short cut forbind("change").As of 1.7 however,
on()was introduced, and is preferred tobind(). That now meanschange()is a shortcut foron("change"), and in fact allbind()calls will now callon()internally.In short, they do the same thing. I find the explicit use of
on()(orbind()) preferable, but as long as you’re consistent throughout your code base, I don’t see any real differences.One could argue that using
change()overon("change")is “better”, as a typo in the word “change” would throw a parse error in the first instance (“undefined is not a function”), but would fail silently withon()… but obviously your unit tests would catch that, right? ;).