2011-03-22 175 views
0

我目前有一些問題與我的菜單,其相當基本的要求。JQUERY兩次點擊問題

問題:

用戶可以在菜單按鈕一次點擊,打開子菜單中,用戶則下一步按鈕打開該子菜單點擊,這是重複按菜單選項的數目。一旦用戶點擊了它們,如果用戶點擊另一個菜單按鈕一次,它將不會打開,如果用戶第二次點擊它將打開。因此,通過菜單運行一次後,只會響應兩次用戶點擊,而不是一次。這個問題發生在其他領域。

我懷疑它的東西與我的點擊處理程序和事件冒泡,但我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文件(H tml標記)導入(使用php include();)到index.php文件中。 JQuery文件在declerations.php中導入,導入到標題的index.php中。 Declerations.php包含所有必需的JQuery庫。意圖是在稍後階段添加UI動畫,以便詳細闡述.show()和.hide()方法。

+2

您可以將此內容發佈到jsfiddle並共享鏈接? – 2011-03-22 14:24:43

+0

你還沒有發佈任何你的點擊處理程序,這是問題可能出現的地方。 – psynnott 2011-12-19 15:10:50

+0

切換功能將是點擊處理程序,但正如我下面提到的也可能是原因 – vmex151 2011-12-19 15:14:25

回答

0

而不是使用切換菜單,我會建議使用.click()方法。點擊可以讓你更容易地控制發生的事情。 Toggle()非常棒,當你想要點擊兩種不同的狀態時,但對於複雜的菜單,它可能不是最好的方法。

此外,您還將自己的輔助導航包裹在span標記和list-items中的各個元素中。這是無效的HTML標記,並且會在某些瀏覽器中導致呈現問題。我會建議將這些跨度更改爲ul的