2010-07-23 8 views
2

Si j'ai une table avec beaucoup de cellules, supposons 50 lignes x 50 colonnes, l'application d'une jquery "droppable" à chaque cellule est-elle inefficace? Puis-je affecter la droppable à la table parent, par exemple, puis capturer l'élément réel (c'est-à-dire le TD) où l'élément est déposé? Si je me souviens correctement de ma délégation d'événement, dans un événement donné, la DT la reçoit en premier, suivie de la TABLE.jquery cible droppable

Quelqu'un peut-il m'éclairer?

Jason

Répondre

1

Vous pouvez le faire en utilisant la délégation d'événement. Essayer d'écouter des clics sur chaque balise TD serait un non non en termes de performance et causerait des problèmes de fuite de mémoire. Attachez un écouteur d'événement sur la balise de table et interceptez l'événement click et déterminez quelle cellule a été cliquée. Check this out, il parle en utilisant la délégation de l'événement sur une table pour capturer des clics sur les éléments TD:

http://www.sitepoint.com/blogs/2008/07/23/javascript-event-delegation-is-easier-than-you-think/

+0

C'était très proche, mais il semble que je ne peux pas obtenir la délégation de l'événement pour fonctionner dans la façon dont je besoin de la fonctionnalité droppable de l'interface utilisateur jQuery. $ (TABLE) .droppable() semble ignorer l'élément sur lequel vous avez cliqué et ne renvoie que la table elle-même en tant que cible de l'événement. Tant pis. – Jason

+0

Hmm c'est peut-être une bizarrerie de jquery droppables ... jamais envisagé de mettre en place le vôtre? Check out out: http://www.webreference.com/programming/javascript/mk/column2/ –