jQuery: ajout d’un gestionnaire d’événement de changement avec une fonction prédéfinie

J’ai donc les éléments suivants:

var change_handler = function(element) { // ... do some fancy stuff ... } 

Maintenant, je veux attacher cela à un élément. Quelle est la méthode meilleure / meilleure ou plus correcte?

 $('element_selector').change(change_handler(this)); 

Ou…

 $('element_selector').change(function() { change_handler(this); }); 

Et cela fait-il une différence si vous passez l’object à la fonction ou pas?

Ni..

 $('element_selector').change(change_handler); 

change_handler sera le pointeur pour ainsi dire sur la méthode et l’argument de l’élément est déjà passé par jQuery

Si vous deviez utiliser $('element_selector').change(change_handler(this)); elle n’affecterait pas réellement la méthode en tant que gestionnaire, mais l’exécuterait plutôt que d’essayer d’assigner le résultat en tant que gestionnaire. L’autre option est superflue, car vous pouvez utiliser le nom de la méthode comme décrit ci-dessus au lieu de la reformuler.

C’est une autre façon d’aborder le problème posé par l’application OP … fonction partielle à un autre SO Q. Liez le gestionnaire de modifications à l’arg d’intérêt et transmettez le résultat obtenu comme argument au gestionnaire de modifications:

 var myChangeHandler = partial(change_handler, this); $('element_selector').change(myChangeHandler);