当前位置: 首页 > 知识库问答 >
问题:

如何只在窗口宽度小于一定量时触发一个函数?

孙光临
2023-03-14

我为一些只想在窗口宽度小于600px时触发的页脚内容创建了一个简单的手风琴。我试过使用window.resize,但是当窗口的大小超过600px时,函数仍然在初始化,我不明白为什么。

如果有人愿意分享一些这方面的建议,我将非常感谢。我一直在兜圈子。

JsFiddle

JS:

function initializeAccordion() {
  var mainToggle = $('.footer-accordion > .footer-column > p');
  $('.footer-accordion > .footer-column > .menu').css('display', 'none');

  mainToggle.click(function() {
    var that = $(this);
    var secondLevel = $(this).siblings('.menu');
    var allSeconds = $('.footer-accordion > .footer-column > .menu');

    if (that.hasClass('is-active')) {
      secondLevel.slideUp();
      that.removeClass('is-active');
      mainToggle.removeClass('is-active');
      allSeconds.removeClass('is-active');
      allSeconds.slideUp();
    } else {
      mainToggle.removeClass('is-active');
      allSeconds.removeClass('is-active');
      allSeconds.slideUp();
      secondLevel.slideDown();
      that.addClass('is-active');
      secondLevel.addClass('is-active');
    }
  });
};

if ($(window).width() < 600) {
  initializeAccordion();
}

$(window).on('resize', function() {
  if ($(window).width() < 600) {
    initializeAccordion();
  }
});

共有1个答案

郑嘉悦
2023-03-14

一款纯JS跨浏览器解决方案:

null

js prettyprint-override">window.onresize = function() {
  checkWidth();
}
checkWidth();

function checkWidth() {
  var vw = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0)
  if (vw < 600) {
    //callFunction();
  }
}
 类似资料:
  • 问题内容: 当用户关闭应用程序时,我需要执行一个函数,但是需要考虑以下几点: 我需要执行一个功能,然后… …超出范围的基于纯JavaScript的函数在这里不太有用 当我使用路由时,作用域绑定也无济于事 因此此解决方案将无法正常工作:https : //stackoverflow.com/a/18355715/773595 因为这会在每次位置更改时触发,但是我只需要在关闭选项卡/窗口时触发一次。

  • 问题内容: 我有两个div容器。 虽然其中一个需要为特定宽度,但我需要对其进行调整,以便另一个div占用其余空间。有什么办法可以做到吗? 问题答案: HTML: CSS: 您也可以使用这样做,这通常是一种更好的方法:如何将输入元素与其标签放在同一行?

  • 我正在尝试在我的Flink作业中使用事件时间,并使用来提取时间戳并生成水印。但是我有一些输入Kafka具有稀疏流,它可以长时间没有数据,这使得中的根本没有调用。我可以看到数据进入函数。 我已经设置了getEnv()。getConfig()。设置自动水印间隔(1000L) 我尝试过 还有会话窗口 所有的水印都显示没有水印,我怎么能让Flink忽略这个没有水印的东西呢?

  • 问题内容: 我已经在窗口调整大小上注册了一个触发器。我想知道如何触发事件被调用。例如,当隐藏一个div时,我希望调用触发函数。 我发现可以触发该功能,但是还有其他解决方案吗? 问题答案: 在可能的情况下,我更喜欢调用函数而不是调度事件。如果您可以控制要运行的代码,则此方法效果很好,但是如果您不拥有该代码,请参见下文。 在此示例中,您可以在不调度事件的情况下调用该函数。 在现代浏览器中,您可以使用以

  • 我想要下面这样的基本代码: 但是,如果这两个事件都被悬停,我希望它不要同时触发这两个事件;例如,如果我悬停在“this”上,它应该只触发它的事件并警告“hello”。我怎么能这么做? 提前谢谢!

  • 我使用overlayScrollbars创建一个 。 当窗口宽度小于600px时,则navbar像边栏一样左转。 创建一个js文件并添加这一行: 现在,当我的widnow宽度小于600px时,overlayscrollbar工作很好,但是当我的窗口宽度大于600px时,overlayscrollbar仍然工作,元素宽度就像侧边栏一样。 当窗口宽度大于600px时,如何禁用overlayScroll