首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在调整窗口大小时,只发生一次火灾事件

在调整窗口大小时,只发生一次火灾事件
EN

Stack Overflow用户
提问于 2017-02-08 18:05:05
回答 2查看 905关注 0票数 1

我试图改变一些交互内容在不同屏幕大小上的处理方式。在小屏幕上,这个内容应该使用光滑的旋转木马显示。

代码语言:javascript
运行
复制
$(window).resize(function() {
    if($(window).width() <= 845) {
        $(".content").slick({
            centerMode: true,
            slidesToShow: 1
        });
    } else if ($(window).width() > 845) {
        $('.content').slick("unslick");
    }
});

这会导致每当窗口调整到低于845的宽度时都会调用slick,这会导致问题。我尝试使用one(),但这不允许调整845以上的大小,然后再后退。

如果用户调整到低于845的大小,那么Slick将被调用一次,如果窗口再次调整大小并满足<= 845条件,则不会再次调用Slick。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-08 18:10:05

一种选择是使用变量来控制光滑的行为。本质上,当您第一次运行光滑时,您将变量设置为true。你用这个变量作为检查的一部分来调用slick。

代码语言:javascript
运行
复制
var runSlick = true
$(window).resize(function() {
    if($(window).width() <= 845 && runSlick) {
        $(".content").slick({
            centerMode: true,
            slidesToShow: 1
        });
        runSlick = false;
    } else if ($(window).width() > 845) {
        $('.content').slick("unslick");
        runSlick = true;
    }
});
票数 0
EN

Stack Overflow用户

发布于 2017-02-09 05:54:51

你可以用这个:

代码语言:javascript
运行
复制
var isResizedOnce = false;
$(window).resize(function() {
    if($(window).width() <= 845) {
        if(!(isResizedOnce)){
            $(".content").slick({
                centerMode: true,
                slidesToShow: 1
            });
        }
        else{
            isResizedOnce = true;
        }
    } else if ($(window).width() > 845) {
        $('.content').slick("unslick");
    }
});

在这段代码中,我使用的是标志isResizedOnce,一旦窗口的大小调整到845以下,该标志就会被设置为true,并在此基础上执行操作。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42120463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档