2012-07-09 197 views
0

我正在使用如下嵌套UL L1标签构建树视图:什么是实现树视图的最佳方法?

<ul> 
     <li>Level 1 a 
      <ul> 
       <li>Level 2 a</li> 
       <li>Level 2 b 
        <ul> 
         <li>Level 3 a</li> 
         <li>Level 3 b</li> 
        </ul> 
       </li> 
      </ul> 
     </li> 
     <li>Level 1 b</li> 
    </ul> 

我想整个树视图导航时,像下面的列表项是对细胞点击:

enter image description here

我知道我们可以在如下列表项中添加JavaScript函数:

<li onClick="redicrectPage(url)"> 

,并添加event.cancelBubble = true以避免父项事件触发子项目点击。

我的问题是,有关上述实施的更好的跨浏览器解决方法?

谢谢您的高级。

+1

谷歌搜索 “jQuery的菜单的例子” 产生了很多有用的信息 – Michael 2012-07-09 06:32:09

+0

你可以把一个 “Node title”,而不仅仅是“结题“在每个”李“标签中,但这不会执行与子菜单之间的导航,这是大多数jQuery TreeView插件所做的。你可以看看如何jsTree,dynatree,... – Ricola3D 2012-07-09 07:28:53

回答

1

你可以在CSS中创建一个嵌套的菜单结构,它将消除冒泡问题。 http://jsfiddle.net/steveukx/HfDBA/的示例使用直接派生选择器可以重复相同的选择器,而无需知道菜单的深度,但如果您支持的浏览器不具备此功能,则应更改HTML以将名称添加到名称中树中的深度并指定CSS中的深度。

HTML:

<ul class="menu"> 
    <li><a href="#">Level 1 a</a> 
     <ul> 
      <li><a href="#">Level 2 a</a></li> 
      <li><a href="#">Level 2 b</a> 
       <ul> 
        <li><a href="#">Level 3 a</a></li> 
        <li><a href="#">Level 3 b</a></li> 
       </ul> 
      </li> 
     </ul> 
    </li> 
    <li><a href="#">Level 1 b</a></li> 
</ul>​ 

CSS

* { font-family: tahoma, sans-serif; font-size: 10pt; } 
a { text-decoration: none; color: #fff; display: block; } 
ul { display: none; } 
ul.menu, li:hover > ul { display: block; } 
li > ul { position: absolute; top: 25%; left: 100%; margin-left: -1em; 
    box-shadow: -1px 1px 1px rgba(0,0,0,0.5); z-index: 1000; } 
li { position: relative; padding: 0.1em 0.5em; width: 100px; background: silver; 
    box-shadow: -1px 1px 1px rgba(0,0,0,0.5); margin: 1px 1px 0; } 
li:hover { background-color: #333; } 
li:hover > a { color: #FAFAFE; } 

相关问题