Je veux utiliser la fonctionnalité live de jQuery pour un événement mouseenter, mais il n'est actuellement pas pris en charge. Ci-dessous est mon premier essai d'une solution, mais cela ne semble pas optimal. Suggestions? Améliorations?Comment émuler un événement mouseenter en utilisant la fonctionnalité live de jquery?
// mouseenter emulation
jQuery('.selector').live('mouseover',function (e) {
// live sees all mouseover events within the selector
// only concerned about events where the selector is the target
if (this != e.target) return;
// examine relatedTarget's parents to see if target is a parent.
// if target is a parent, we're "leaving" not entering
var entering = true;
jQuery(e.relatedTarget).parents().each(function() {
if (this == e.target) {
entering = false;
return false; // found; stop searching
}
});
if (!entering) return;
/*
the rest of my code
*/
});
Je ne peux pas vérifier les enfants cibles pour relatedTarget b/c il n'y a pas un moyen facile d'obtenir tous les nœuds enfants. Je ne peux pas vérifier directement si les parents de la cible ont relatedTarget comme parent et donc "entrant" la cible, b/c pour le passage de la souris, il pourrait être entré d'un frère adjacent et pas un parent.
Cette solution fonctionne bien. Je l'ai testé, et ça semble bien, mais comment pourrais-je l'améliorer? Il souffre également de la façon dont le DOM est mis en place. Une partie des éléments du sélecteur doit être exposée pour voir l'événement mouseover, mais c'est rarement un problème dans les exemples que j'essaie. Pourtant, s'il y a un moyen de garantir que cela sera vu, ce serait bien.
Je suppose que je veux savoir si j'aborde ce problème, et sinon, quoi de mieux?