2014-06-17 57 views
1

問題#1所以我有一個菜單,要求的車型,車型和年份。我有基本的功能工作,但我的代碼不乾淨。我該如何製作這款DRYer?jquery菜單,點擊切換類一次展開一個列表級別

jQuery(document).ready(function($) { 


$('li.menu-item-type-custom').on('click', function() { 
    $(this).closest('ul.sub-menu').toggleClass('expand-menu'); 
}); 
$('li.menu-item-type-custom').on('click', function() { 
    $(this).find('> ul.sub-menu').toggleClass('expand-menu'); 
}); 


}); 

問題#2 我也希望每個只有一個孩子做或在時間顯示模式。現在,如果我點擊make 1並設爲2,那麼文本重疊,看起來很糟糕。我試圖

$('li.menu-item-type-custom').on('click', function() { 
    $(this).find('> ul.sub-menu').toggleClass('expand-menu'); 
     if($(this).hasClass("expand-menu")) { 
     $(this).siblings().removeClass("expand-menu") 
     } else{} 
}); 

,但我的做法是錯誤的,它不工作

DEMO: http://jsfiddle.net/BbF9K/

感謝您的幫助

+0

這是一個使用你的課程減肥版本。 http://jsfiddle.net/BbF9K/5/ –

+0

這是我正在尋找,但它只能深入一層,有沒有辦法讓這個工作,使模型年顯示?現在,這一年不會顯示在點擊上。 – stavrogin

+0

對不起,我忽略了這一點。簡單的修正:http://jsfiddle.net/BbF9K/7/ –

回答

1

我太累了,整理好你所有類,所以我只使用hide()show()。隨意將它翻譯回CSS驅動的語句。

http://jsfiddle.net/isherwood/BbF9K/2/

jQuery(document).ready(function ($) { 
    $('li.menu-item-type-custom').on('click', function() { 
     $(this).siblings().find('ul.sub-menu').hide(); 
     $(this).children('ul.sub-menu').show(); 
    }); 
}); 

下面是用幻燈片效果的版本:

http://jsfiddle.net/isherwood/BbF9K/3/

你也可以收緊你的jQuery像這樣:

http://jsfiddle.net/isherwood/BbF9K/4/

jQuery(function($) { 
    $('li.menu-item-type-custom').click(function() { 
     $(this).siblings().find('ul.sub-menu').slideUp(); 
     $(this).children('ul.sub-menu').slideDown(); 
    }); 
}); 
+0

我用.removeClass(「expand-menu」)和.show()用.addClass(「expand-menu」)替換了.hide(),並讓它起作用! http://jsfiddle.net/BbF9K/6/ – stavrogin