在YUI中,有没有办法从DOM引用tab或tabview对象?

时间:2009-06-10 00:27:16

标签: javascript jquery dom yui reference

似乎应该有,但我已经查看了API和nada。我不知道它是如何在2.x中完成的。目前,我通过jQuery的tab and tabview将带有元素的引用存储到data method对象。

原因:当我通过鼠标悬停和点击与标签进行互动时,我需要能够引用YUI标签/标签视图对象的属性&方法。由于我正在使用事件委托b / c我有很多选项卡(选项卡中的选项卡),我不是直接附加(可能有数百个)事件监听器,因此我无法访问选项卡和选项卡通过this符号。

对于按钮(YAHOO.widget.Button.getButton)有一个相应的方法,但是除非我遗漏了明显的东西,否则没有一个用于标签的方法。

此外,似乎如果我有一个制表符对象,则没有对tabview的引用。再一次,我创建了自己的引用,但我认为应该有一个引用或访问器方法。

任何人都可以对此有所了解吗?其他人接受这种方式的方式不同吗?

2 个答案:

答案 0 :(得分:1)

YUI问题的最佳位置是yuilibrary.com上的论坛。

YUI TabView组件内置了事件委托。每个Tab事件实际上都由它所属的TabView处理。每个事件都被路由到相应的Tab,并且处理程序的上下文被设置为Tab。

这允许您像往常一样分配听众:

tabview.getTab(1).on('mouseover',function(e){     的console.log(e.target.innerHTML); // e.target ===标签标签元素     的console.log(this.get( '标签')); //这个===标签实例 });

这也适用于嵌套的TabView。

Tab和TabView之间目前没有绑定,除了TabView的“tabs”属性。如果有一个用例来了解它属于哪个TabView,你可以迭代这个集合并将你的元素与每个Tab的“元素”属性进行比较。

答案 1 :(得分:0)

您是否尝试过使用Firebug,使用DOM选项卡/ DOM子面板,并实际查看文档和/或相关元素上的属性/属性/方法?这通常是查看您可以访问的内容的最快方式。

如果您不确定可用的内容并且无法通过firebug获取该信息,那么

也值得做一个for..in循环来枚举返回对象的所有属性/方法。

e.g。

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

在大多数情况下都是如此,而不仅仅是你的特定问题。

修改 刚刚检查了tabi的YUI示例,我发现DOM元素上没有引用JS对象的选项卡的属性。我想这样做是为了避免DOM污染,但看起来你可能不得不在创建标签/标签时自己做出这些参考

e.g。

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