выпадающее меню jquery

#jquery #menu #drop-down-menu

#jquery #меню #выпадающее меню

Вопрос:

как я могу изменить этот код, чтобы меню выпадало при ("ul.topnav li") наведении курсора мыши, а не <span> . когда я изменил код, все ("ul.subnav) выпадало при наведении курсора мыши.

Спасибо,

 <script language="javascript"  type="text/javascript">
    $(document).ready(function() {

       $("ul.subnav").parent().append("<span></span>");

       //When trigger is clicked...
       $("ul.topnav li span").mouseenter(function() { 

            //Following events are applied to the subnav itself 
            //(moving subnav up and down)

            //Drop down the subnav on click
            $(this).parent().find("ul.subnav").slideDown('fast').show(); 

            $(this).parent().hover(function() {
            }, function() {
                //When the mouse hovers out of the subnav, move it back up
                $(this).parent().find("ul.subnav").slideUp('slow'); 
            });

        //Following events are applied to the trigger 

        }).hover(function() { //(Hover events for the trigger)

            $(this).addClass("subhover"); //On hover over, add class "subhover"
        }, function() { //On Hover Out

            //On hover out, remove class "subhover"
            $(this).removeClass("subhover"); 
        });

    });


</script>
  

Комментарии:

1. Я думаю, что вы выбираете родительский элемент ul nav, который сдвигает все вспомогательные навигаторы, чтобы скользить вниз по этому.slidetoggle()

Ответ №1:

Когда вы меняете .mouseenter() вложение события на li , это изменяет область действия всего, что находится внутри функции. К счастью, весь код внутри просто пытается вернуться к родительскому коду li того span , на который он изначально был нацелен. Итак, чтобы это исправить. вы просто удаляете вызовы parent() там, где это уместно.

 <script language="javascript"  type="text/javascript">
    $(document).ready(function() {

       $("ul.subnav").parent().append("<span></span>");

       //When trigger is clicked...
       $("ul.topnav li").mouseenter(function() { 

            //Following events are applied to the subnav itself 
            //(moving subnav up and down)

            //Drop down the subnav on click
            $(this).find("ul.subnav").slideDown('fast').show(); 

            $(this).parent().hover(function() {},
            function() {
                //When the mouse hovers out of the subnav, move it back up
                $(this).find("ul.subnav").slideUp('slow'); 
            });

        //Following events are applied to the trigger 

        }).hover(function() { //(Hover events for the trigger)

            $(this).addClass("subhover"); //On hover over, add class "subhover"
        }, function() { //On Hover Out

            //On hover out, remove class "subhover"
            $(this).removeClass("subhover"); 
        });

    });
</script>
  

Комментарии:

1. Не ‘видел ваш комментарий : не могу пометить комментарии как принятые ответы, поэтому этот вопрос никогда не будет «закрыт» без ответа :

2. нет, нет, согласен, я не был уверен в своем ответе, поэтому я прокомментировал, я рад, что вы ответили на это. Я просто не хотел помещать половинчатый ответ в «ответ»