2010-05-10 62 views
1

我已经创建了一个扩展来显示在Firefox的侧边栏。 现在我需要显示一个树状结构,其中第三层将是动态的,并在点击时加载特定的链接。 我知道如何创建三个层次结构但静态数据..继承人的代码 firefox侧栏中的树元素与动态元素和点击功能

<treechildren> 
    <treeitem container="true" open="true"> 
     <treerow> 
     <treecell label="Guys"/> 
    </treerow> 

    <treechildren> 
     <treeitem> 
     <treerow> 
      <treecell id="cell-of-treeitem1" label="Bob" onclick="alert('bob')"/> 
     </treerow> 
     </treeitem> 
     <treeitem> 
     <treerow> 
      <treecell label="Jerry"/> 

     </treerow> 
     </treeitem> 
    </treechildren> 
    </treeitem> 
</treechildren> 

的onclick不showup什么

1)我怎样才能实现链接功能..就像在点击treecell元素时打开的链接一样? “onclick”属性不起作用。此外,我可以在点击各个项目时运行JavaScript功能。

2)如何显示动态列表。假设我有一个JS函数来重新发送一个列表,我如何在这里显示它作为树元素(基本上,然后js应该每次运行我都会展开树父项来查看孩子)

回答

2

首先,将onclick事件处理程序置于树本身,而不是元素。当在小区内的用户点击,因为该事件,冒泡,树会抓住它,无论哪个小区接收到点击:

function clickedOnSomething(event) { 
    if(event.originalTarget.localName == "treechildren") { 
     //do something here based on who is event.originalTarget 
    } 
} 

其次,要动态地创建内容,创建在XUL空树:

<tree id="myTree" onclick="clickedOnSomething(event)" flex="1" seltype="single"> 
    <treecols> 
     <treecol id="myCol" label="Stuff" primary="true" flex="1" /> 
    </treecols> 
    <treechildren/> 
</tree> 

然后在JavaScript中,您创建一个实现nsITreeView接口的对象(见下面的链接),并将其指定为您在XUL创建的树视图。

该对象将作为Tree小部件的数据接口,允许树在数据更改时自动更新。

您可以在这里找到更多关于自定义树形视图的信息:https://developer.mozilla.org/en/XUL_Tutorial/Custom_Tree_Views