Почему у меня не работает переключатель слайдов?

StackOverflow https://stackoverflow.com/questions/9445233

  •  12-11-2019
  •  | 
  •  

Вопрос

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

$("#dropdown_menuitem").click(function() {
    $(this).find('ul').slideToggle('slow');
});

Однако раскрывающееся меню никогда не появляется при нажатии, мой HTML выглядит так:

<li id="dropdown_menuitem"><a href="#">MyAxon<img style="padding-left:5px;" src="img/drop-down.png"/></a>
    <ul class="dropdown reverse_gradient">
         <li class="dropdown"><a href="#">Teachers</a></li>
         <li class="lastElementInDropDown dropdown"><a href="#">Students</a></li>
    </ul>
</li>
.
.

Редактировать:Я пытался alert($(this).find('ul').html()); и я получил предупреждение с обоими <li> элементы.

$(this).find('ul').show(200); тоже не сработало

Содержимое не добавляется динамически.

Мой CSS выглядит так:

 nav.main_nav ul.dropdown{
     opacity: 0; 
     position: absolute; 
     top: 35px; 
     left: 10px;  
     border-bottom-right-radius: 10px; 
     -moz-border-bottom-right-radius: 10px;
     border-bottom-left-radius: 10px; 
     -moz-border-bottom-left-radius: 10px;
     display: none;
     z-index: 100;
  }

Есть идеи?

Это было полезно?

Решение 2

Нашел проблему, я установил непрозрачность на ноль в моем стиле, что помешало мне увидеть раскрывающееся меню.

Другие советы

Ну, во-первых, вы должны убедиться, что то, на что вы нажимаете, не является самой ссылкой.Здесь вы делаете .click даже для li. Но что, если пользователь действительно щелкнет ссылку?Что ж, тогда они будут перенаправлены на href внутри ссылки.

Итак, чтобы предотвратить это, вам нужно добавить событие клика к самой ссылке:

$("#dropdown_menuitem a").click(function(e) {
    if($(this).parent().find('ul').length > 0) {
         e.preventDefault():;
    }
});

Это проверит, существует ли раскрывающийся список в текущем li. Если да, мы не будем перенаправлять пользователя, чтобы прервать выполнение нашего JavaScript.Итак, что мы делаем, так это предотвращаем текущее событие.Например, перенаправление.

Попробуйте и дайте мне знать, если получилось :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top