on() ist zudem flexibler als bind() - on() ersetzt bind(), live() und delegate() und greift somit auch auf Dinge, die erst später ins DOM eingefügt werden.
Dann finde ich die Doku diesbezüglich aber missverständlich:
"The .on() method attaches event handlers to the currently selected set of elements in the jQuery object."
Kommt drauf an, wie und wo man es aufruft - leider ist die Doku sehr zerpflückt - es steht in der on()-Doku nicht klar was nun was genau tut, da muss man in den Dokuseiten der deprecated-Methoden nachschauen wo das dann erklärt wird.
Beim überfliegen der Doku finde ich spontan aber keine "opt-out"-Möglichkeit - was ist, wenn ich gar kein "live"-Verhalten will (weil es unter gewissen Umständen auf die Performance gehen kann), kann ich das nicht (mehr) explizit "abbestellen"?
// live
$(document).on(
'click',
'#foo',
function() { }
);
// bind
$('#foo').on(
'click',
function() { }
);
Wenn man also das "live"-Verhalten abstellen haben will, nutzt mal "on" mit der delegate()-Syntax, wenn man das bind-Verhalten will, nutzt man die "normale" Syntax die man von bind() oder live() kennt.
Aber wie oben schon gesagt: die Doku ist sehr leicht misszuverstehen - ggf. hat molily Zeit, sich mal durch den Code zu wursteln, um herrauszufinden, wie es wirklich funktioniert :)