JQuery прослушивается при зависании - почему это так? - PullRequest
1 голос
/ 29 июня 2011

У меня есть следующий код:

$(".nav_button").hover(function(){
m = $(this).children("ul").css("display");
if (m == "none"){
    $(this).children("ul").slideDown(300);
}
else{
    $(this).children("ul").slideUp(300);
}
});

И часто он прослушивается, иногда скользит, остается и т. Д. Любая идея, почему это и как это исправить?

Ответы [ 4 ]

1 голос
/ 29 июня 2011

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

$(".nav_button").hover(function(){
    $(this).children("ul").slideToggle(300);
});

Это автоматически снизит или уменьшит ваш UL в соответствии с текущим состоянием.

это из официальной документации jQuery:

slideToggle (); Показать или скрыть согласованные элементы со скольжением движение.

0 голосов
/ 29 июня 2011

Используйте как это:

$(".nav_button").hover(function(){
     m = $("ul").css("display");
     alert(m);
     if (m == "none") {
         $("ul").slideToggle(300);        
     }
     else {
         $("ul").slideToggle(300);
     }
});

См. Демонстрацию: http://jsfiddle.net/rathoreahsan/JAA9q/4/

или Вы можете использовать как это:1010 *http://jsfiddle.net/rathoreahsan/JAA9q/7/

0 голосов
/ 29 июня 2011

, если нет только одного дочернего элемента 'ul', m = $(this).children("ul").css("display") вернет массив, поэтому в следующем операторе if (m == 'none') он может сломаться.Вы, вероятно, хотите, чтобы .each там наступил на каждую ul

0 голосов
/ 29 июня 2011

Я не вижу никакой ошибки в вашем коде, возможно, это можно переписать так.

$(".nav_button").hover(function(){
  m = $(this).children("ul");
  if (m.css("display") == "none"){
   m.slideDown(300);
  }
  else{
   m.slideUp(300);
  }
});

Таким образом, вы смотрите на элемент только один раз в DOM

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...