Mon application a ajouté dynamiquement des Dropdowns. L'utilisateur peut en ajouter autant qu'il le souhaite.
J'utilisais traditionnellement la live()méthode de jQuery pour détecter le moment où l'un de ces Dropdowns était change()édité:
$('select[name^="income_type_"]').live('change', function() {
alert($(this).val());
});
Depuis jQuery 1.7, j'ai mis à jour ceci pour:
$('select[name^="income_type_"]').on('change', function() {
alert($(this).val());
});
En regardant les documents, cela devrait être parfaitement valide (non?) - mais le gestionnaire d'événements ne se déclenche jamais. Bien sûr, j'ai confirmé que jQuery 1.7 est chargé et fonctionne, etc. Il n'y a aucune erreur dans le journal des erreurs.
Qu'est-ce que je fais mal? Merci!
liveutilise en fait deontoute façon, donc une réécriture du code hérité pourrait ne pas être nécessaire pour l'instant jusqu'à celivequ'il soit supprimé, ce qui, je crois, est 1.9. Extrait de la source 1.7.1:live: function( types, data, fn ) {jQuery( this.context ).on( types, this.selector, data, fn ); return this;}Donc, si l'on ne met pas à niveau une version dans laquelle il alivedisparu, une mise à jour peut ne pas être nécessaire immédiatement pour le code hérité. Pour un nouveau code, il est préférable d'utiliser à laon()place, comme recommandé. Je pensais juste que cette information pourrait aider quelqu'un d'autre à un moment donné.