UPDATE : jquery-migrate – Migrate older jQuery code to jQuery 1.9+.
Sources : http://stackoverflow.com/questions/14354040/jquery-1-9-live-is-not-a-function | http://stackoverflow.com/questions/14703646/jquery-how-to-use-the-on-method-instead-of-live/14703668#14703668
A lire avant que vous n’entrepreniez un Rechercher et Remplacer automatique:
Pour une migration rapide sur un site en production, ne vous contentez pas d’un remplacement automatique du mot-clé live
par on
, car les paramètres des deux fonctions sont différents :
1 |
.live(events, function) |
devrait devenir :
1 |
.on(eventType, selector, function) |
La présence du sélecteur est très importante! Si vous n’avez pas besoin de l’utiliser, déclarez le comme null
.
Migration Example 1:
Avant :
1 |
$('#mainmenu a').live('click', function) |
Après, il faut déplacer l’élément enfant (a
) sur le paramètre selector
de la fonction .on()
:
1 |
$('#mainmenu').on('click', 'a', function) |
Migration Example 2:
Avant :
1 |
$('.myButton').live('click', function) |
Après, il faut déplacer l’élément (.myButton
) sur le paramètre selector
de la fonction .on()
, et cible l’élément parent le plus proche (de préférence un ID) :
1 |
$('#myMenu').on('click', '.myButton', function) |
Si vous ne savez pas quoi mettre comme élément parent, body
fonctionne toujours :
1 |
$('body').on('click', '.myButton', function) |
Migration Example 3 :
Avant :
1 2 3 |
$("[data-role='page']").live('click',function(){ $("#my").html(result); }); |
Après :
1 2 3 |
$('body').on('click', "[data-role='page']", function(){ $("#my").html(result); }); |