gpt4 book ai didi

javascript - 切换按钮的 jQuery 媒体查询 - 根据屏幕宽度不同的操作

转载 作者:行者123 更新时间:2023-12-03 02:27:40 25 4
gpt4 key购买 nike

我有一个切换按钮,它基本上显示/隐藏产品索引页面上的过滤器列表。桌面很简单,当单击按钮时,面板将通过以下脚本显示或隐藏:

$(".filter-toggle").click(function(){
$(".grid").toggleClass("hide-filters");
});

当浏览器低于 1024px 时,我使用 mmenu 插件复制过滤器内容并将其移动到 Canvas 外面板中。其代码如下所示:

$(document).ready(function() {
$(".filters").mmenu({
// Options
navbar: {
title: "Filters"
}
}, {
// Configuration
clone: true,
offCanvas: {
pageSelector: ".page"
},
classNames: {
selected: "active"
}
});

var API = $(".filters").data("mmenu");
var $icon = $(".filter-toggle");

$icon.on("click", function() {
API.open();
});
});

显然(目前)当单击切换按钮时,它将显示/隐藏页面上的内容,但同时也会触发滑出菜单。

我的问题是如何仅在需要时运行相关脚本。是否也可以在调整大小时执行此操作,而不仅仅是在页面加载/刷新时执行此操作?

我尝试使用matchMedia。这是一个快速的 CodePen,显示了我现在的位置...

https://codepen.io/moy/pen/wymvjN

看起来一开始就有效。高于 1024px 时切换有效。缩小浏览器意味着按钮会触发滑出面板 - 太棒了!但是,当缩放回桌面时,只要单击切换按钮就会触发滑出菜单。刷新时它会再次工作......直到您缩小浏览器并再次备份。

有什么想法吗?

最佳答案

您可以监听窗口调整大小事件,并相应地触发函数。例如,在 jQuery 中:

$(window).on('resize', function(e) {
var windowWidth = $(window).width();

if (windowWidth < 1024) {
// initialize small viewport functionality
} else {
// initialized large viewport functionality
}
});

但是,您需要一种方法来在切换回桌面时禁用该 mmenu 插件,并将其包含在您在此情况下运行的任何脚本中。

或者,the mmenu "Responsive Layout" documentation提供了使用 CSS 媒体查询在某些断点处隐藏克隆菜单的示例。

关于javascript - 切换按钮的 jQuery 媒体查询 - 根据屏幕宽度不同的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48875966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com