2009-06-10 4 views
0

Il semble qu'il devrait y avoir, mais j'ai regardé sur l'API et nada. Je ne vois pas comment ça se fait en 2.x. Actuellement, je stocke des références avec les éléments aux objets tab and tabview via data method de jQuery.Dans YUI, existe-t-il un moyen de référencer les objets tabulation ou tabview du DOM?

Le pourquoi: Lorsque je suis en contact avec les onglets via mouseovers et de clics, je dois être en mesure de référencer les propriétés & méthodes des objets onglet YUI/de TabView. Puisque j'utilise la délégation d'événements b/c j'ai tellement d'onglets (onglets dans les onglets), je ne suis pas directement attachés (potentiellement des centaines de) écouteurs d'événements, et donc je n'ai pas accès aux onglets et tabview via le this.

Il existe une méthode correspondante pour les boutons (YAHOO.widget.Button.getButton) mais pas une pour les onglets sauf si quelque chose me manque.

En outre, il semble que si j'ai un objet onglet, il n'y a pas de référence à la tabview. Encore une fois, je crée ma propre référence, mais je suppose qu'il devrait déjà y avoir une référence ou une méthode d'accès.

Quelqu'un peut-il faire la lumière là-dessus? Quelqu'un d'autre aborde cela différemment?

Répondre

1

Le meilleur endroit pour les questions YUI sont les forums sur yuilibrary.com.

Le composant YUI TabView dispose d'une délégation d'événement intégrée. Chaque événement Tab est en fait géré par le TabView auquel il appartient. Chaque événement est routé vers l'onglet approprié et le contexte du gestionnaire est défini sur l'onglet.

Cela vous permet d'assigner vos auditeurs comme vous le feriez normalement:

tabview.getTab (1) .on ('mouseover', function (e) { console.log (e.target.innerHTML); // e.target === Elément d'étiquette d'onglet console.log (this.get ('label')); // this === Instance d'onglet });

Cela fonctionne également pour les onglets imbriqués.

Il n'existe actuellement aucune liaison entre Tab et TabView, à l'exception de l'attribut "tabs" de TabView. Vous pouvez itérer cette collection et comparer votre élément à l'attribut "element" de chaque onglet s'il existe un cas d'utilisation pour savoir à quel TabView il appartient.

+0

Bonjour Matt, bienvenue à SO! J'ai regardé/écouté quelques-uns de vos entretiens YUI. Ils sont super! Je suis un grand fan de la bibliothèque YUI. Cependant, je pense que beaucoup d'entre nous trouvent révolutionnaire par rapport aux forums traditionnels. J'ai été à la fois sur les forums de yuilibrary et #yui et les ai trouvés manquant. Par exemple, essayez de chercher "tabview" sur les forums. 29 résultats sur 3 pages. (Qu'est-ce qui se passe avec l'espacement vertical, aussi?) La première page et demi sont 1 sujet. Je n'ai aucune idée du nombre de résultats réels. Maintenant, essayez de filtrer avec "événement". Frustrant. Ce genre de frustration pousse les gens à chercher des alternatives. –

+0

Quant à votre réponse, le live docs.jquery.com/Events/live de jQuery me donne un écouteur par type d'événement pour l'ensemble du document. C'est incroyablement utile et a changé la façon dont je code mes applications web. Merci de confirmer la liaison de données, et encore une fois je tiens à exprimer combien j'apprécie YUI. –

0

avez-vous essayé d'utiliser Firebug, en utilisant l'onglet DOM/sous-panneau DOM, et en regardant réellement les attributs/propriétés/méthodes sur le document et/ou les éléments connexes? C'est généralement le moyen le plus rapide de voir à quoi vous pouvez accéder.

également utile de faire une boucle for..in pour énumérer toutes les propriétés/méthodes d'un objet retourné si vous n'êtes pas sûr de ce qui est disponible et incapable d'obtenir cette information via firebug.

par exemple.

var properties = ""; 
for (prop in obj) { 
    properties += prop+"\n"; 
} 
alert(properties); 

Ceci est vrai dans la plupart des cas, pas seulement pour votre question particulière.

EDIT Après avoir vérifié les exemples juste YUI pour TabView, je vois qu'il ya pas de propriété sur les éléments DOM pour les onglets qui font référence à des objets JS. Je suppose que cela a été fait pour éviter la pollution DOM, mais il semble que vous ayez à faire ces références vous-même lors de la création des onglets/tabulaires

par exemple.

var tabView = new YAHOO.widget.TabView('demo'); 
document.getElementById("demo").tabView = tabView; 
+0

Oui, j'ai utilisé firebug pour inspecter le (s) élément (s) DOM, mais je ne pense pas que YUI ajouterait aux propriétés/méthodes des éléments. Pour être clair, j'ai l'élément DOM, et je veux revenir à l'objet yui. Je peux passer d'un objet à un autre via l'API, mais pas vice versa. Ce que vous suggérez signifie que yui a ajouté de nouvelles méthodes ou propriétés directement à l'élément DOM. –

+0

voir mon édition. yui ne modifie pas les propriétés de l'élément DOM, mais * vous * pouvez. Lorsque vous créez l'onglet YUI, ajoutez la propriété vous-même si vous avez besoin de la référencer depuis le DOM plus tard –

+0

Je suis conscient que je peux. Voir ma question, 2e ligne. Je pense que la méthode de données est plus propre. J'espère qu'un expert de YUI connaîtra une manière meilleure/plus propre de le faire par l'intermédiaire de l'API semblable à la méthode de getButton que j'ai mentionnée. Aussi, bien qu'il semble qu'il n'y ait aucun moyen d'obtenir l'objet tab de l'élément tab, je ne sais toujours pas pourquoi/si yui ne créerait pas une référence ou un accesseur de l'objet tab à l'objet tabview, mais il semble que ce soit l'affaire. –

Questions connexes