2013-07-25 49 views
0

對於這篇文章的目的,請看我的jsfiddle位於http://jsfiddle.net/ca7ws/click事件調用一個函數未引用

這是我的菜單。點擊最後3個(計分/歷史/管理)中的其中一個顯示子菜單。點擊子菜單上的鏈接應該添加「selectedMenu」類。看起來好像沒有。

通過添加警報( 「SomeText」 則會),以每個功能,我注意到,當

JQuery(".menuLinksSub li").click(function(){ 

叫,

jQuery(".menuCategory").click(function(){ 

也被稱爲。

因此,課程被添加,然後立即帶走,給出沒有工作的外觀。

我最初的想法是,它是NAV和UL行爲中固有的,所以我甚至去除了HTML中的所有NAV/UL/LI標籤,並用DIV/SPAN代替它們,但無濟於事。行爲是一樣的。

我已經嘗試了很多,很難過。任何幫助你可能會不勝感激。

感謝, Shadraq

回答

4

事件向上通過DOM冒泡,因爲大多數的事件做。你必須從內部事件處理程序停止:

jQuery(".menuLinksSub li").click(function(e){ 
    e.stopPropagation(); 
    // ... your logic 
}); 

http://jsfiddle.net/ca7ws/1/

+0

知府。這很好。感謝您的快速和準確的幫助。對於我前進的信息,是否有一些文件說明你在那裏做了什麼?我想稍微閱讀一下,所以我不會再犯這個錯誤。 – theShadraq

+1

@theShadraq只是簡單地解釋一下,當你點擊一個'.menuLinksSub li'元素時,你還可以點擊包含它的'.menuCategory' div(技術上,對嗎?當你考慮它時是有意義的)。 點擊事件處理從最裏面的元素開始處理。所以你必須告訴click事件在你爲最內層的元素處理完之後停止向上傳播。 (這是一個很棒的參考資料:http://www.quirksmode.org/js/events_order.html) – sgroves

+0

@theShadraq看看[這個方法的jQuery文檔](http://api.jquery.com/event.stopPropagation/ )。我也喜歡[古老的quirksmode頁面上的事件](http://www.quirksmode.org/js/introevents.html),它是舊的,但大多數信息仍然適用。 – bfavaretto

相關問題