JQuery show()和hide()在同一个循环中

时间:2017-04-22 09:24:06

标签: jquery show-hide

我有以下代码,我需要显示或隐藏面板。我的问题是,show()仅适用于替代点击。

var allPanels = $(".panel");
allPanels.hide(2000);
allPanels.show();

我想知道show()不能始终如一地工作的原因。

3 个答案:

答案 0 :(得分:1)

由于您在<div class="panel" >This is a DIV</div> <button type="button" class="buttonClick" >Click me</button> 中设置了时间,因此无效。你必须按照以下方式编写::

<强> HTML

$(document).ready(function (e) {
    $(document).on('click', '.buttonClick', function () {
        var allPanels = $(".panel");
        allPanels.hide(2000, function(){
            allPanels.show();
        });
    });
});

<强> JQUERY

os.makedirs

答案 1 :(得分:0)

更简单的方法是在你开始另一个动画之前 .stop()当前动画。

today = 0
tomorrow = 24

availabilities = {
  monday: [
    { start_time: today + 6,
      end_time: today + 12 },
    { start_time: today + 8,
      end_time: today + 18 }
  ],
  tuesday: [
    { start_time: tomorrow + 10,
      end_time: tomorrow + 16 },
    { start_time: tomorrow + 18,
      end_time: tomorrow + 23 }
  ]
}

availabilities = availabilities.map do |day, avails|
  [ day,
    avails.map do |avail|
      (avail[:start_time]..avail[:end_time])
    end
  ]
end.to_h
# {:monday=>[6..12, 8..18], :tuesday=>[34..40, 42..47]}

这样您就不必将代码放在回调中。 请注意,这样做会明确地暂停动画忽略其当前状态。

答案 2 :(得分:0)

当我从

中删除动画时序时
var allPanels = $(".panel");
allPanels.hide(2000);
allPanels.stop().show();

已更改为

var allPanels = $(".panel");
allPanels.hide();
allPanels.stop().show();`enter code here`
它开始工作了。隐藏和显示无缝地工作。谢谢。但有人可以说为什么隐藏和显示时间不起作用。