我目前的菜单存在问题,根据要求非常基本。
ISSUE:
用户可以单击菜单按钮一次并打开子菜单,然后用户点击打开该子菜单的下一个按钮,这将根据菜单选项的数量重复。一旦用户点击它们,如果用户点击另一个菜单按钮一次,它将无法打开,如果用户再次点击它将打开它。因此,一次浏览菜单后,只会响应两次用户点击而不是一次。其他方面也出现了这个问题。
我怀疑它与我的点击处理程序和事件冒泡有关,但我的JQuery知识是自学的,所以我可以做几个指针:
JQuery代码
$(document).ready(function(){
$('#menu span').hide();
$('#menu li').not('.sub_menu').toggle(function(){
//$('#menu span').hide();
$('.open').hide();
//$(this).next().not('#mm_choice, .sub_menu').show();
$(this).nextUntil('li').not('#mm_choice, .sub_menu').show().addClass('open');
}, function(){
//$(this).next().not('#mm_choice, .sub_menu').hide();
//$(this).nextUntil('li').not('#mm_choice, .sub_menu').hide().removeClass('open');
$('.open').removeClass('open').hide();
});
});
HTML源代码
<div id="menu" title="Main Menu">
<ul id="m_choices" class="main_menu">
<li id="mm_choice" title="Customer Segmentation Menu">Customer Segmentation</li>
<span id="c_seg"><li class="sub_menu" title="Cust Seg Menu1">Cust Seg Menu1</li><li id="c_seg" class="sub_menu" title="Cust Seg Menu2">Cust Seg Menu2</li><li id="c_seg" class="sub_menu" title="Cust Seg Menu3">Cust Seg Menu3</li></span>
<li id="mm_choice" title="Industry Menu">Industry Selection</li>
<span id="all_ind"><li class="sub_menu" title="View All Industries">View All</li></span>
<span id="spec_ind"><li class="sub_menu" title="View information on a specific Industry">View Specific Industry</li></span>
<li id="mm_choice" title="Customer Satisfaction Menu">Customer Satisfaction</li>
<span id="all_cs"><li class="sub_menu" title="View every industry's CS survey results">View All</li></span>
<span id="spec_cs"><li class="sub_menu" title="View a specific industry's CS survey results">View Specific Industry</li></span>
<li id="mm_choice" title="Performance Measures Menu">Performance Measures</li>
<span id="all_pm"><li class="sub_menu" title="Trend Menu">View All</li></span>
<span id="spec_pm"><li class="sub_menu" title="Trend Menu">View Specific Industry</li></span>
<li id="mm_choice" title="Business Performance Menu">Business Performance</li>
<span id="all_bp"><li class="sub_menu" title="Bus Perf Menu">View All</li></span>
<span id="spec_bp"><li class="sub_menu" title="Bus Perf Menu">View Specific Industry</li></span>
<li id="mm_choice" title="Trend Analysis Menu">Trend Analysis Menu</li>
<span id="all_trends"><li class="sub_menu" title="Trend Menu">View All</li></span>
<span id="spec_trends"><li class="sub_menu" title="Trend Menu">View Specific Industry Trends</li></span>
</ul>
</div>
将menu.php文件(html标记)导入(使用php include();)到index.php文件中。 JQuery文件在declerations.php中导入,导入到头文件中的index.php中。 Declerations.php包含所有必需的JQuery库。意图是在稍后阶段添加UI动画,以便详细说明.show()和.hide()方法。
答案 0 :(得分:0)
我建议使用.click()方法,而不是使用切换菜单。点击可以让你更轻松地控制发生的事情。当你想在点击上有两种不同的状态时,Toggle()很棒,但对于复杂的菜单,它可能不是最好的方法。
此外,您将辅助导航包含在span标记和list-items中的各个元素中。这是无效的HTML标记,会导致某些浏览器出现渲染问题。我建议将这些跨度改为ul's