为什么整个宽度都可以点击,我该如何更改呢?
显然,唯一可点击的区域应该是可见的文本,没有别的。
我尝试过显示:内联块,但它搞砸了菜单。
感谢。
HTML
<div class="wrapper">
<ul>
<li class="menu-level-1"><a href="#">Item 1</a>
<ul class="menu-level-2">
<li><a href="#">Item 1-1</a></li>
<li><a href="#">Item 1-2</a></li>
</ul>
</li>
<li class="menu-level-1"><a href="#">Item 2</a>
<ul class="menu-level-2">
<li><a href="#">Item 2-1</a>
<ul class="menu-level-3">
<li><a href="#">Item 2-1-1</a></li>
</ul>
</li>
</ul>
</li>
<li class="menu-level-1"><a href="#">Item 3</a>
<ul class="menu-level-2">
<li><a href="#">Item 3-1</a></li>
<li><a href="#">Item 3-2</a></li>
<li><a href="#">Item 3-3</a></li>
</ul>
</li>
<li class="menu-level-1"><a href="#">Item 4</a>
<ul class="menu-level-2">
<li><a href="#">Item 4-1</a></li>
<li><a href="#">Item 4-2</a></li>
</ul>
</li>
</ul>
</div>
CSS
body{
margin: 0px;
border: 0;
overflow: hidden;
}
ul {
list-style: none;
margin: 0;
padding: 0;
color: #000000;
}
ul li {
position: relative;
}
li ul {
position: absolute;
left: 120px;
top: 0;
display: none;
}
ul li a {
text-decoration: none;
color: #000000;
}
.menu-level-1 {
position: relative;
top: 20px;
left: 20px;
font-family: Arial, Helvetica, sans-serif;
font-size: 11px;
font-weight: normal;
line-height: 15px;
letter-spacing: 0em;
text-transform: uppercase;
}
.menu-level-2 {
position: fixed;
top: 20px;
font-family: Arial, Helvetica, sans-serif;
font-size: 11px;
font-weight: normal;
line-height: 15px;
letter-spacing: 0em;
text-transform: uppercase;
}
答案 0 :(得分:1)
整个宽度是可点击的,因为li元素具有列表项显示,其行为指定其宽度为100%。这是误导性的,因为只有锚标签有指针光标。
我用以下内容更新了你的小提琴(http://jsfiddle.net/180xhfwk/2/):
$('.menu-level-1 a').on('click', function() {
var parent = $(this).parent();
...
});
它现在将点击监听器绑定到锚标签本身,而不是我认为你期望的.menu-level-1事物和功能。
答案 1 :(得分:1)
只需更改CSS并使用display:table。
ul li {
position: relative;
display: table;
}
答案 2 :(得分:0)
不使用 li 的点击事件,而是使用锚点的点击事件 并且在遍历时使用 parent()
Jquery的:
$('.menu-level-2').hide();
$('.menu-level-1 > a').on('click', function(){
if(!($(this).parent().children('.menu-level-2').is(':visible'))){
$('.menu-level-2').slideUp();
$(this).parent().children('.menu-level-2').slideDown();
} else {
$('.menu-level-2').slideUp();
}
});
$('.menu-level-2').on('click', function(e){
e.stopPropagation();
});
这里是JSFiddle:http://jsfiddle.net/180xhfwk/4/