【问题标题】:jQuery not detecting window size correctlyjQuery没有正确检测窗口大小
【发布时间】:2014-07-06 13:19:04
【问题描述】:

所以我有一组在大屏幕上没有使用图像滑块的图像。当屏幕低于某个宽度时,会启动图像滑块。

目前,当我手动调整窗口大小并在周围拖动大小时效果很好。

但是,如果我将窗口调整为小尺寸并点击F5,那么页面会自动识别出它需要启动图像滑块。发生的情况是图像如下加载,而不是交互式图像滑块。

所以问题是如果页面已经低于 939,那么 bxSlider 功能就不起作用了。它会将图像放入如下的项目符号列表中,而无需实际添加交互性。当屏幕大小调整到 939 以上时,它也不会停用 bxSlider。

【问题讨论】:

    标签: javascript jquery html css


    【解决方案1】:

    听起来您正在使用resize 事件来触发您的代码。小尺寸刷新时不起作用的原因是页面加载后,您没有再次调整它的大小,因此不会触发resize事件。

    仅当您手动放大/缩小浏览器时才会触发调整大小,而不刷新页面。

    要修复它,只需在第一页加载时触发您当前的功能(我在这里看不到代码,但大概它会检查当前浏览器尺寸并相应地更新页面?如果是这样,那么运行完全安全且明智页面加载的开始)。

    【讨论】:

    • 您好,很抱歉我不小心删除了代码。我现在已经添加了代码,我认为你所说的是正确的,但我不确定如何在我的代码中修复它,我已经玩了几个小时了。
    • 抱歉添加更多内容,但代码在checkWidth 中使用,因为它确实执行底部的heading 相关代码,但由于某种原因并没有完全启动bxSlider
    • 啊没问题,谢谢你把它放回去。看起来问题只是命名! checkWidth() 函数正在寻找像 #image-holder 这样的 ID,但 HTML 中的实际 ID 是 #image-holder2
    • 抱歉,它确实使用了 2 个 ID,我刚刚以 #image-holder2 为例,但 #image-holder#image-holder2 都遇到了同样的问题。我尝试了很多不同的东西,但似乎无法让它执行bxSlider 代码,以便它初始化图像滑块
    • 是这个吗? jsfiddle.net/2HJzC/5 - image-holder 缺少 .acc-list 类,我删除了对 image-holder2 的 2 个 hasClass 检查,因为小提琴中没有 image-holder2(所以这永远不会通过)。滑块现在以小尺寸为我启动。
    【解决方案2】:

    尝试改变这个

    $(window).resize(checkWidth);
    

    $window.on('resize', function() {
        checkWidth();
    });
    

    【讨论】:

    • 仍然具有相同的行为,如果我将窗口设置为 939 像素以下,然后按 F5,我会加载图像滑块,如上图所示。这也意味着,当我将窗口放大(超过 939 像素)时,它也不会恢复到应有的样子。
    • 不是我能看到的,当我检查元素时,<ul> 正确地具有 bxslider 类,但是 bxSlider 没有执行它,因为它应该在上面图片
    • 我尝试过,但使用 bxSlider 库也很困难。我可以通过发送文件向您展示代码,但我没有运气在 JSFiddle 中复制任何类型的行为
    • jsfiddle.net/2HJzC/4 这只是我的代码,但我不知道它是否正常工作,因为它没有正确实现图像滑块
    • 似乎很难在 jsfiddle 中复制它
    猜你喜欢
    • 2013-11-17
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    相关资源
    最近更新 更多