2010-04-29 12 views
2

Lorsque je lie un événement mousemove à un élément, il fonctionne correctement avec tous les navigateurs sauf Internet Explorer. Avec IE, l'utilisation du processeur est trop importante et certaines choses associées (par exemple, info-bulle) sont laides. Y a-t-il un moyen de me débarrasser du problème de performance? (ouais je sais, n'utilisez pas IE :)jQuery mousemove performance

MISE À JOUR: Même si je ne fais rien dans la fonction gestionnaire d'événements, l'utilisation de l'UC est toujours élevée. Voici mon code:

$("#container").live("mousemove", function(e){ 

}); 

Est-ce normal?

+0

Que faites-vous sur 'mousemove'? La réponse dépend grandement de cela. –

+0

Je définis la position gauche et supérieure d'une infobulle. Mais même si je ne fais rien, l'utilisation du processeur reste élevée. – Colby77

+0

Quelle version de jQuery? Et pourquoi poseriez-vous une question comme celle-ci sans fournir de code? Pensez-vous que nous sommes des magiciens qui lisent des pensées? Le problème est probablement lié à 99,9% à votre gestionnaire d'événements, et non IE. –

Répondre

0

Vous ne devriez avoir aucun problème à lier des mises à jour simples à l'événement de déplacement de la souris, même dans IE. Glisser/déposer, comme on l'a vu récemment sur un site gazillion, est implémenté exactement de cette façon.

Si vous voyez des pics énormes dans le processeur, je considérerais peut-être qu'il existe une cause sous-jacente plus importante.

2

Utilisez-vous des sélecteurs jquery dans l'événement mousemove? J'ai vu des cas où les sélecteurs jquery ralentissent dans des pages complexes, si vous mettez le sélecteur dans un événement qui se déclenche plusieurs fois, il y a un décalage notable. Dans la plupart des cas, vous pouvez simplement stocker la référence jquery à l'élément avant la souris, puis la souris utilise la référence de l'élément au lieu d'utiliser à nouveau un sélecteur qui recalcule le DOM à chaque fois qu'il est appelé.