2012-09-25 3 views
0

J'ai un problème. Je veux être capable d'instancier plus d'un objet Seadragon Viewer sur la même page. Tout va bien, sauf que j'ai écrit gestionnaire d'événements (comme clic, mousemouse, etc) et je veux qu'ils soient génériques.Événements Seadragon - Obtenez le visionneur Seadragon lorsque les événements sont déclenchés

Cependant, il semble qu'il n'y ait aucun moyen de savoir sur quel afficheur Seadragon l'événement est appelé. Par exemple, tous les événements jQuery peuvent appeler le "this" pour faire référence à l'élément sur lequel l'événement a été déclenché. Le seul moyen que j'ai trouvé jusqu'ici est de déclarer mes visionneuses Seadragon comme variables globales, ce qui n'est pas super élégant ...

Existe-t-il un équivalent "this" pour Seadragon Events?

+0

Pensez à utiliser des fermetures Javascript pour cela. http://stackoverflow.com/questions/111102/how-do-javascript-closures-work –

Répondre

0

J'ai obtenu une solution légèrement plus élégante en utilisant un tableau pour tous les objets Seadragon Viewer que je déclare. Donc, je stocke une référence de SD Viewer dans un tableau global. Chacun des éléments utilisés pour intégrer un objet Seadragon a la classe "Seadragon".

Lorsque l'événement est déclenché, je fais:

var id = $ (this) .closest ('SeadragonViewport. ') Attr (' id');. var cSDObj = g_SDObjets [id];

où cSDObj est l'objet Seadragon actuel que je devrais utiliser.

Je suis ouvert à toutes les suggestions qui est mieux que celui-ci, mais jusqu'à présent, il a travaillé!

Questions connexes