2013-08-21 50 views
2

IM。這裏是我的代碼:「查找」有麻煩<strong><em>選擇</em></strong>的<code>ul</code><code>--></code><code>li's</code>嵌套駐留父<code>ul</code><code>--></code><code>li</code>內<code>div</code>內的UL裏的嵌套在UL李

// Navigation 
$(document).ready(function() { 

    // Click function 

    $(".sidebar ul li a").on("click", function() { 
     $(this).parent().addClass('open').find("ul.submenu").stop("true", "true").slideDown().addClass('active'); 
     $(this).parent().siblings().removeClass('open').find("ul.submenu").stop("true", "true").slideUp().removeClass('active'); 
     $(this).parent().siblings("ul.submenu.ul.li a").removeClass('open'); //<-- This is not working. 
    }); 

    $(".sidebar ul li ul li a").on("click", function() { 
     $(this).parent().addClass('open'); 
     $(this).parent().siblings().removeClass('open'); 
    }); 
}); 

我評論說部分是不工作,其餘的工作正常。 基本上所述第一函數將類.open於被點擊li,並打開包含子ul嵌套DIV,下一行中刪除類和關閉div如果點擊另一個li

第二組處理添加和刪除ul裏ul裏的開放類。

問題在於第一組的第三個功能,當點擊ul li時,應該從所有ul li li中刪除開放類。

預先感謝您。

+0

$(「。sidebar ul li ul li a」)我認爲這些選擇器很慢。嘗試$(「somthing」)。find(「...」);或使用上下文$(「somthing」,document.getElementById(「id」)); – pethel

+0

@ user874774不好意思看它,我對這一切都很陌生,謝謝你的輸入! – FezMonki

回答

0

第一件事情,你要注意,你的第二次點擊綁定是不必要的,因爲你想".sidebar ul li ul li a"爲目標的元素由".sidebar ul li a",因爲你不使用的嫡系選擇>已經有針對性的,因爲你正在執行兩個函數中的相同操作都可以將其刪除。

同樣,Arun在他的回答中評論道,你使用類選擇器而不是後代選擇器,但我仍然不相信修復會給你想要的結果。我相信這樣做會對你有用:

$(".sidebar ul li a").on("click", function() { 
    $(".open").not($(this).parents('li')).removeClass('open'); 
    $(this).parent().addClass('open').find("ul.submenu").stop("true", "true").slideDown().addClass('active'); 
    $(this).parent().siblings().find("ul.submenu").stop("true", "true").slideUp().removeClass('active'); 
}); 
+0

我明白你的意思,並且你的代碼完美工作,除了相同的原因,爲什麼我想讓這個過於複雜的代碼工作:)現在的問題是,它會從ul li中刪除.open,當ul ul ul li是點擊。基本上,當一個子li是.open時,其父li應該也是.open,用於顯示目的。 – FezMonki

相關問題