2011-01-09 2 views
0

J'ai un code comme celui-ciJavascript/jQuery: événement mouseenter pas de tir correctement

$('#singleColumn' + time).show(SHOW_COMPONENT_SPEED) 
    .live('mouseenter', function() { $('#propertiesButtonSingle' + time).fadeIn(FADEIN_SPEED); }) 
    .live('mouseleave', function() { $('#propertiesButtonSingle' + time).fadeOut(FADEOUT_SPEED); }); 

que j'utilise pour afficher/cacher un bouton quand MouseEnter/événements MouseLeave sont tirés sur une boîte.

Le problème est que ma page est dynamique, c'est-à-dire que je continue d'ajouter du nouveau HTML à la page en utilisant la fonction JQuery .html(). Ce qui se passe, c'est que les événements souris ne sont lancés que pour la dernière case que j'ai ajoutée (je les ajoute par glisser-déposer): généralement, ça fonctionne bien pour la première case, si j'en ajoute une autre, les événements sont correctement déclenchés Je déplace la souris sur la première case rien ne se passe. Si j'ajoute une troisième case, la seconde cesse de fonctionner aussi, etc ...

Le code que j'ai posté est pour un type de boîte, mais pour les autres types c'est pratiquement le même en dehors des noms des sélecteurs.

+0

Qu'est-ce 'time', et est-ce pour chaque course sélecteur possible? –

+0

time est un horodatage permettant de créer des ID différents pour chaque objet. Ce code est exécuté lors de la création d'une boîte, donc le sélecteur est le nom de la boîte qui vient d'être créée, qu'entendez-vous par tout sélecteur possible? –

+0

Pour tout le monde: c'est comme si les nouveaux événements mouseenter écrasaient tous les précédents même si le sélecteur est différent. –

Répondre

0

un coup d'oeil à .delegate() - http://api.jquery.com/delegate

vous pourriez lier les événements à un objet plus haut dans l'arborescence DOM et écouter ...

+0

Mais dans ce cas, l'objet n'est pas plus haut dans l'arborescence DOM, car je ne joins le gestionnaire à l'objet qu'après la création de l'objet. –

Questions connexes