jQuery在悬停时被窃听 - 为什么会这样?

时间:2011-06-29 13:01:02

标签: jquery slide

我有以下代码:

$(".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 个答案:

答案 0 :(得分:1)

使用此代码来取消支票和其他不相关的代码

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

这将根据当前状态自动滑动或滑动您的UL。

这是来自官方jQuery文档:

  

的slideToggle();显示或隐藏   匹配元素与滑动   运动。

答案 1 :(得分:0)

我在代码中看不到任何错误,也许可以像这样重写。

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

通过这种方式,您只在DOM中查看元素

答案 2 :(得分:0)

除非只有一个子'ul',m = $(this).children("ul").css("display")将返回一个数组,因此在下一个语句if (m == 'none')中它可能会中断。 你可能想要一个.each来处理每个ul

答案 3 :(得分:0)

像这样使用:

$(".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/

或者您可以这样使用:

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

参见演示:http://jsfiddle.net/rathoreahsan/JAA9q/7/