使用jQuery,如何禁用当前选项卡上的单击效果?

时间:2008-11-04 03:15:00

标签: javascript jquery

我有一个动画菜单,但我想在动画发生时禁用点击。

<div></div>
<div></div>
<div></div>

$("div").click(function() { 
  $(this).animate({height: "200px"}, 2000); 
  return false;
});

但是,我想在事件发生时禁用所有按钮,并禁用单击的div。

我正在考虑在点击的div中添加一个类,并将点击仅放在没有该类的div上:

$("div").not("clicked").click(function() { 
  $(this).animate({height: "200px"}, 2000).addClass("clicked"); 
  return false;
});

但这似乎不起作用(我认为它在逻辑上有效)?

任何帮助表示感谢。

干杯,
史蒂夫

3 个答案:

答案 0 :(得分:15)

$("div").click(function() {
    if (!$(this).parent().children().is(':animated')) {
        $(this).animate({height: "200px"}, 2000); 
    }
    return false;
});

答案 1 :(得分:0)

你可以这样做......

$(function() {          
    $("div").click(function() {                 

        //check to see if any of the divs are animating
        if ($("div").is(":animated")) { 
            alert("busy"); 
            return; 
        }

        //whatever your animation is        
        var div = $(this);
        div.slideUp(3000, function(){ div.slideDown(1000); });

    });

});

只要任何div当前没有动画,这将为点击设置动画。我很可能把所有这些div放在一个容器中,而不仅仅是简单地引用div,因为它可能会影响页面上的菜单,而不仅仅是菜单,

答案 2 :(得分:0)

如何离开点击的&lt; div&gt;动画发生后禁用?我已经为已被点击的div添加了一个类,但是执行以下操作似乎不起作用:

<div></div>
<div class="active"></div>
<div></div>

$("div").not('active').click(function() {
  if (!$(this).parent().children().is(':animated')) {
    $(this).animate({height: "200px"}, 2000); 
  }
  return false;
});

我怀疑我错过了一些关于道路的东西。不是工作