2013-11-25 4 views
1

У меня есть этот вертикальный аккордеон, как боковой бар навигация. Все работает нормально, но я столкнулся с проблемой с иконками, которые я использую от Twitter Bootstrap 3.jquery - вертикальное меню навигации аккордеона

Вот FIDDLE.

Когда я расширяю элемент списка, я хочу, чтобы значок был направлен вниз, и когда я нажимаю снова, он не обрушивается. А также я хочу, чтобы значок был изменен на левую, обращаясь к значку chevron.

Также, пожалуйста, помогите мне в добавлении перехода к нему, например, когда он собирается расширяться. Я хочу, чтобы это было анимировано с лица слева направо.

А также я могу расширить меню только при нажатии на текст. Я не мог сделать этого во всей строке.

Заранее спасибо.

ответ

4

Я думаю, что мне удалось осуществить то, что вы после: Вот FIDDLE

Вот основная функция JS. Это немного неопрятно, но основная функциональность есть. Вы можете исправить это, как хотите.

function toggleAccordion(li) { 
    if(li.hasClass('active')) { 
     li.removeClass('active'); 
     $('.sub-menu', li).slideUp(); 
     $('i', li).removeClass('glyphicon-chevron-down').addClass('glyphicon-chevron-left'); 
    } 
    else { 
     $('li.active .sub-menu').slideUp(); 
     $('li i').removeClass('glyphicon-chevron-down').addClass('glyphicon-chevron-left'); 
     $('li.active').removeClass('active'); 
     li.addClass('active'); 
     $('.sub-menu', li).slideDown(); 
     $('i', li).removeClass('glyphicon-chevron-left').addClass('glyphicon-chevron-down'); 
    } 
}; 
+0

Спасибо большое. Я не знал, как это сделать, используя jquery. Теперь, когда у меня есть это, я могу придерживаться этого и сделать его еще лучше. Еще раз спасибо .. +1 голос :) –

+0

Можете ли вы, пожалуйста, сказать мне, что означает этот '$ ('i', li)' селектор? –

+0

Это означает «поиск элемента' i' под * элементом li ». Таким образом, селектор найдет только элементы '', которые являются дочерними элементами указанного элемента 'li'. Проверьте [этот ответ] (http://stackoverflow.com/a/306904/36938) для деталей. –

0

Проверьте это ниже код

$(window).load(function(){ 
$(document).ready(function() { 
    $('.sidebar ul li a').click(function(ev) { 
    //$('.sidebar .sub-menu').not($(this).parents('.sub-menu')).slideUp(); 
    $(this).next('.sub-menu').slideToggle(); 
    ev.stopPropagation();   
    if($(this).find("i").hasClass('glyphicon-chevron-left')){ 
     $(this).find("i").remove(); 
     $(this).append('<i class="sidebar-icon glyphicon glyphicon-chevron-down"></i>'); 
    }else{ 
     $(this).find("i").remove(); 
     $(this).append('<i class="sidebar-icon glyphicon glyphicon-chevron-left"></i>'); 
    } 
}); 
}); }); 
Смежные вопросы