是否可以在其他窗口宽度中更改已经设置的setTimeout?

时间:2019-07-20 12:16:30

标签: javascript jquery window width settimeout

我有一个下拉菜单,在dekstop版本中,我希望延迟1.5秒,但是当平板电脑或iphone的宽度已经更改(例如小于768px)时,我想将settimeout更改为ZERO / 0?有可能做到吗?实际上,我在菜单中添加了一个类,因此它可能会显示出来,但是当它关​​闭时,我将settimeout设置为1.55s。但是,如果您使用的是手机或平板电脑,要等待那么长时间有点烦人。...

$menuHolder.on('click', function() {
  if ($menu.hasClass('open') || $navMenu.hasClass('visible')) {
    setTimeout(function() {
      $menu.removeClass('open');
    }, 1550);
    $navMenu.removeClass('visible')
    return;
  }
  $menu.addClass('open');
  $navMenu.addClass('visible');
})

var windowWidth = $win.width();
if (windowWidth < 769) {
  $menuHolder.on('click', function() {
    if ($menu.hasClass('open') || $navMenu.hasClass('visible')) {
      setTimeout(function() {
        $menu.removeClass('open');
      }, 0);
      $navMenu.removeClass('visible')
      return;
    }
    $menu.addClass('open');
    $navMenu.addClass('visible');
  })
}

1 个答案:

答案 0 :(得分:0)

考虑到您其余的代码都能正常工作(我们看不到您的变量$win$menuHolder等来自何处),我将按照以下方式处理您的问题:

var windowWidth = $win.width();

$menuHolder.on('click', function() {
  if ($menu.hasClass('open') || $navMenu.hasClass('visible')) {
    setTimeout(function() {
      $menu.removeClass('open');
    }, (windowWidth < 769 ? 0 : 1550)); // here is the change for mobile devices
   $navMenu.removeClass('visible')
   return;
  }
  $menu.addClass('open');
  $navMenu.addClass('visible');
});

希望有帮助。...