代码之家  ›  专栏  ›  技术社区  ›  Keith Bentrup

在YUI中,是否有方法引用来自DOM的选项卡或TabView对象?

  •  0
  • Keith Bentrup  · 技术社区  · 15 年前

    看起来应该有,但我已经看过了API和NADA。我不知道如何在2.x中完成。目前,我将元素引用存储到 tab and tabview 通过jquery的对象 data method .

    原因何在: 当我通过鼠标器和单击与选项卡交互时,我需要能够引用yui选项卡/选项卡视图对象的属性和方法。由于我使用的是事件委托b/c,我有很多选项卡(选项卡中的选项卡),因此我没有直接附加(可能有数百个)事件侦听器,因此我无法通过 this 符号。

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

    另外,如果我有一个选项卡对象,那么就没有对选项卡视图的引用。再一次,我创建了自己的引用,但我假设已经有了一个引用或访问器方法。

    有人能解释一下吗?还有其他人对此有不同的看法吗?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Matt Sweeney    15 年前

    Yui问题的最佳地点是yuilibrary.com上的论坛。

    yui-tabview组件内置事件委托。每个选项卡事件实际上都由它所属的选项卡视图处理。每个事件都被路由到相应的选项卡,并且处理程序的上下文被设置为该选项卡。

    这允许您按照通常的方式分配侦听器:

    tabview.gettab(1).on('mouseover',函数(e){ console.log(e.target.innerhtml);/e.target===tab label元素 console.log(this.get('label'));//this==tab instance (});

    这也适用于嵌套的选项卡视图。

    目前除了TabView的“Tabs”属性外,TabView和TabView之间没有绑定。您可以迭代这个集合,并将元素与每个选项卡的“element”属性进行比较,前提是有一个用例可以知道它属于哪个选项卡视图。

        2
  •  0
  •   Jonathan Fingland    15 年前

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

    如果您不确定什么是可用的,并且无法通过Firebug获取信息,那么也值得执行for..in循环来枚举返回对象的所有属性/方法。

    例如

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

    这在大多数情况下都是正确的,不仅仅是你的特定问题。

    编辑 在检查了tabview的yui示例之后,我发现引用JS对象的选项卡的dom元素上没有属性。我认为这样做是为了避免DOM污染,但是在创建选项卡/选项卡视图时,您可能需要自己引用这些内容。

    例如

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