【问题标题】:Add resize event when window changes from mobile to desktop当窗口从移动设备更改为桌面时添加调整大小事件
【发布时间】:2016-02-02 21:42:02
【问题描述】:

大家!

我只是想知道是否有人可以向我介绍如何在以下代码中添加调整大小事件:

    /* Your code goes here */ 

var $ = jQuery,
breakpoint = 940,
initClass = 'toggleSubnavInitiated',
menu,
parentLinks,
childrenItems;

$(document).ready(function() {
menu = $('.menu');
parentLinks = menu.find('.menu-item-has-children > a');
childrenItems = menu.find('.sub-menu');

if ($(window).width() <= breakpoint) {
    toggleSubnav(menu, parentLinks, childrenItems);
}
});

$(window).resize(function() {

if ($(window).width() <= breakpoint) {
    toggleSubnav(menu, parentLinks, childrenItems);
}
});

function toggleSubnav(menu, parentLinks, childrenItems) {

if (parentLinks.length !== 0) {
    menu.addClass(initClass);
    childrenItems.hide();

    parentLinks.on('click', function(event) {
        event.preventDefault();

        $(this).siblings('.sub-menu').toggle();
    });
}
}

在这段代码中似乎有一个,但是当浏览器从移动站点切换到桌面站点时,它似乎没有调整大小。在 Chrome 上,我能够获得 941 像素作为从移动设备切换到桌面设备的断点。我猜这个脚本中包含的 940 像素是从桌面到移动的吗?桌面到移动似乎运行正常。当窗口以 941 像素从移动设备变为桌面时,任何人对如何添加调整大小事件有任何想法?

谢谢大家的帮助!

附:我刚加入这里,所以请放轻松! ;)

【问题讨论】:

  • 你有一个合法的 resize() 事件分配给窗口。你在这段代码中有什么问题?当你从桌面切换到移动时,你是怎么做的?使用 Chrome 网络开发者工具?
  • 我真的不明白你的问题是什么......你的调整大小事件和回调看起来像是正确定义的。当您使用 Chrome 时,您的代码是否有效?
  • 对不起,我刚刚更新了评论。我意识到这很混乱。我注意到的问题是,当窗口从移动站点转到桌面站点时,它没有自动刷新页面。从移动站点到桌面站点的断点是 941px。 940 px 的调整大小事件似乎需要从桌面转到移动设备。我想我只是错过了另一个从移动设备到桌面的调整大小事件(即 941 像素)?
  • 调整大小函数中的其他条件
  • 那会是什么样子?这段代码是有人给我的,我不太清楚如何将 else 函数合并到这个中

标签: javascript jquery resize window


【解决方案1】:

当您从高于 940 像素的值变为低于 940 像素时,您的 resize() 事件已正确设置。但是,您还没有定义任何相反的行为。你可以这样修改你的代码:

/* your previous code */
$(window).resize(function() {

    if ($(window).width() <= breakpoint) {
        toggleSubnav(menu, parentLinks, childrenItems);
    } else {
        $(this).siblings('.sub-menu').toggle(); //I assume you want the menu to disappear when moving back to a wider screen
    }
});

我也会小心使用toggle() 方法,因为每次调用它时,它都会显示或隐藏您的菜单。所以想象一下用户第一次在 940px 下调整大小,菜单会按照你的计划显示。如果他将大小调整得更低,您的菜单将再次消失。

【讨论】:

  • 感谢您的超快速回复。对此,我真的非常感激。当我将其添加到脚本并在移动站点上对其进行测试时,子菜单会从其父菜单自动扩展。上面的代码是为了帮助将所有子菜单项自动折叠到其父项中。
  • 您可以尝试将toggle(display)display 用作布尔值。将其设置为 true 以显示菜单,false 以隐藏它们。
  • 类似:'$(window).resize(function() { if ($(window).width()
  • 当您尝试这样做时,您获得的行为是什么? toggleSubnav方法中你也改成toggle(false)了吗?
  • 所以,它就像我没有添加额外的代码一样工作。有没有我可以添加的代码,只是说如果窗口是
猜你喜欢
  • 1970-01-01
  • 2019-10-18
  • 1970-01-01
  • 2015-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-21
相关资源
最近更新 更多