2016-02-06 3 views
-1

Я ищу решение, как открыть и закрыть аккордеон, перевернув над родительскими ссылками? Я знаю, что могу добавить метод наведения, но он всегда закрывает аккордеон, когда я удаляю курсор. Мне нужно закрыть только меню, когда я нахожу другой элемент.Наведите указатель мыши на меню Acordeon

Было бы здорово, если бы кто-нибудь мог дать мне подсказку!

$(document).ready(function() { 
 
    $('#nav > li > a').click(function(){ 
 
    if ($(this).attr('class') != 'active'){ 
 
     $('#nav li ul').slideUp(); 
 
     $(this).next().slideToggle(); 
 
     $('#nav li a').removeClass('active'); 
 
     $(this).addClass('active'); 
 
    } 
 
    }); 
 
    if($(".active").parent().parent().is('#nav')){ 
 
    \t \t $(".active").next().slideToggle(); 
 
    }else{ 
 
    \t $(".active").parents('ul').siblings('a').click(); 
 
    } 
 
    
 
});
#nav { 
 
    float: left; 
 
    width: 280px; 
 
} 
 
#nav li a { 
 
    display: inline-block; 
 
    padding: 10px 15px; 
 
    text-decoration: none; 
 
    color: #000; 
 
    list-style:none; 
 
} 
 
#nav li a:hover, #nav li a.active { 
 
} 
 
#nav li ul { 
 
    display: none; // used to hide sub-menus 
 
    list-style:none; 
 
} 
 
#nav li ul li a { 
 
    padding: 10px 25px; 
 
} 
 
ul{ 
 
    list-style:none; 
 
    
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<ul id="nav"> 
 
    <li><a href="#" >Item 1</a> 
 
    <ul> 
 
     <li><a href="#" class="active">Sub-Item 1 a</a></li> 
 
     <li><a href="#">Sub-Item 1 b</a></li> 
 
     <li><a href="#">Sub-Item 1 c</a></li> 
 
    </ul> 
 
    </li> 
 
    <li><a href="#">Item 2</a> 
 
    <ul> 
 
     <li><a href="#">Sub-Item 2 a</a></li> 
 
     <li><a href="#">Sub-Item 2 b</a></li> 
 
    </ul> 
 
    </li> 
 
    <li><a href="#">Item 3</a> 
 
    <ul> 
 
     <li><a href="#">Sub-Item 3 a</a></li> 
 
     <li><a href="#">Sub-Item 3 b</a></li> 
 
     <li><a href="#">Sub-Item 3 c</a></li> 
 
     <li><a href="#">Sub-Item 3 d</a></li> 
 
    </ul> 
 
    </li> 
 
    <li><a href="#">Item 4</a> 
 
    <ul> 
 
     <li><a href="#">Sub-Item 4 a</a></li> 
 
     <li><a href="#">Sub-Item 4 b</a></li> 
 
     <li><a href="#">Sub-Item 4 c</a></li> 
 
    </ul> 
 
    </li> 
 
</ul>

Здесь то же самое в jsfiddle: https://jsfiddle.net/8y60hre0/8/

+1

* Я знаю, что я мог бы добавить парения-метод, но он всегда закрывает аккордеоне, когда я удалить курсор. * - Можете ли вы добавить эту версию кода? У вас здесь нет ошибки (поэтому мы не можем ее отлаживать). – BSMP

+0

Комментарий Dito @BSMP выше. Я не испытываю проблему, которую вы описываете. Я создал jsfiddle, заменив «щелчок» на «зависание» или «наведение мыши», и, похоже, работает так, как ожидалось. https://jsfiddle.net/Currell/m8hvcxpx/ – Scott

+0

Он отлично смотрится, спасибо вам большое! Только одна небольшая или большая проблема: меню с активным элементом класса li должно оставаться открытым по умолчанию и не должно закрываться при зависании с другими родительскими элементами. – Luke

ответ

-1
$(document).ready(function() { 
    $('#nav > li > a').click(function(){ 
    if ($(this).attr('class') != 'active'){ 
     $('#nav li ul').slideUp(); 
     $(this).next().slideToggle(); 
     $('#nav li a').removeClass('active'); 
     $(this).addClass('active'); 
    }else{ 
     $('#nav li a').removeClass('active'); 
     $(this).addClass('active'); 
     $(this).next().slideToggle(); 
    } 
    }); 

    $('#nav > li > a').hover(function(){ 
    if ($(this).attr('class') != 'active'){ 
     $('#nav li ul').slideUp(); 
     $(this).next().slideToggle(); 
     $('#nav li a').removeClass('active'); 
     $(this).addClass('active'); 
    } 
    }); 



    if($(".active").parent().parent().is('#nav')){ 
     $(".active").next().slideToggle(); 
    }else{ 
    $(".active").parents('ul').siblings('a').click(); 
    } 

}); 
+0

Большое спасибо! При использовании у меня были некоторые проблемы, потому что на активной странице (li class = "ative") меню открывается по умолчанию, и когда я нахожу другие родительские элементы, меню закрывается примерно три раза. Я думаю, что меню с активным классом li должно оставаться открытым все время - также когда я паря на других родительских элементах. Как я могу добиться этого? – Luke