jquery: passer des variables dans la fonction hover ()?

Puis-je passer une variable dans hover ()?

Comme dans le script ci-dessous, je ne veux pas déclarer deux fois la même variable var target = xxx et je ne veux pas faire de cette variable une target = xxx globale target = xxx Bcos J’ai une autre fonction qui utilise cette variable: target.

  $('.image-profile').hover(function () { var target = $('.button-change-image-profile',this); target.show(); },function () { //var target = $('.button-change-image-profile',this); target.hide(); }); 

J’ai donc essayé de passer le var comme ceci },function (target) { , bien sûr que c’est faux, mais une autre méthode pour passer ce var?

Merci.

La version courte est juste pour basculer ici:

 $('.image-profile').hover(function () { $('.button-change-image-profile',this).toggle(); }); 

Pour qu’il soit disponible dans chaque gestionnaire (en tant que solution plus générale), définissez-le à l’extérieur lors de la mise en boucle (à l’aide de .each() par exemple), comme .each() :

 $('.image-profile').each(function() { var target = $('.button-change-image-profile',this); $(this).hover(function () { target.show(); },function () { target.hide(); }); }); 

Une autre approche possible: enregistrer les données dans this du .data() à l’aide de jQuery .data() . Vous le sauvegardez à la souris, vous le récupérez à la souris. Ceci peut être similaire sur le plan conceptuel à l’utilisation d’une variable globale ou d’une fonction de survol de la variable, vous pouvez donc créer des erreurs …

 $('.image-profile').hover(function () { var target = $('.button-change-image-profile',this); target.show(); // we save the target object into the 'target' key. $(this).data('target',target); },function () { // we resortingeve the target object (a jQuery object) and then hide it. $(this).data('target').hide(); }); 

Espérons que cette approche ne soit pas trop fausse …

Je pense que jQuery bind pourrait être ce que vous voulez.

Il suffit de définir la fonction var out of hover.