web-dev-qa-db-fra.com

jquery trigger hover on anchor

J'utilise jQuery pour développer dans un environnement Web.

Je veux savoir pourquoi

 $("#a#trigger").trigger('mouseenter');
 $("#a#trigger").trigger('hover');
 $("#a#trigger").trigger('mouseover');

Tous les 3 ne fonctionnent pas pour activer une fonction de survol que j'ai.

$(function() {


        $('a#trigger').hover(function(e) {
          $('div#pop-up').show();

             }, function() {
          $('div#pop-up').hide();
        });

     });

      });

a#trigger est le nom de l'ancre et #pop-up est un élément div dans mon site Web.

Le problème est que je veux passer la souris sur un événement dans le plugin FullCalendar et ces fonctions ne fonctionnent pas. Merci.

20
Ori Refael

Vous êtes sur la bonne voie, le problème est le supplément # Dans le sélecteur, il suffit de supprimer le premier hachage:

$("a#trigger").trigger('mouseenter');

Notez que puisque les ID doivent être uniques, il n'est pas nécessaire de spécifier le type d'élément, $('#trigger') est plus efficace.

Notez également que:

obsolète dans jQuery 1.8, supprimé dans 1.9: Le nom "hover" Utilisé comme raccourci pour la chaîne "mouseenter mouseleave". Il attache un seul gestionnaire d'événements pour ces deux événements, et le gestionnaire doit examiner event.type Pour déterminer si l'événement est mouseenter ou mouseleave. Ne confondez pas le nom de pseudo-événement "hover" Avec la méthode .hover(), qui accepte une ou deux fonctions.

66
undefined

Votre sélecteur jQuery doit être écrit comme par exemple.

$('a#trigger');

au lieu de $('#a#trigger');

Dans jQuery, un # dans un sélecteur correspond à un id. Dans ce cas, trigger est un identifiant, mais a est un élément HTML et ne nécessite aucun préfixe.

Votre code final serait:

$("a#trigger").trigger('mouseenter');
$("a#trigger").trigger('hover');
$("a#trigger").trigger('mouseover');
9
Jonathan Nicol