gpt4 book ai didi

javascript - 仅在调整窗口宽度大小时调用 jquery 函数

转载 作者:行者123 更新时间:2023-11-30 02:26:41 26 4
gpt4 key购买 nike

我有一个函数 responsive 可以改变我网站上某些元素的行为,包括隐藏弹出窗口等。我在两种情况下调用它:

$(document).ready(responsive);
$(window).resize(responsive);

问题出现在android chrome上,因为虚拟键盘实际上改变了屏幕的高度,并触发了responsive功能,这关闭了我的弹出窗口(其中一些有文本字段,使得无法类型)。

如何防止这种情况发生?我在某处读到一个很好的观点,即 android 虚拟键盘只改变屏幕的高度,而不是宽度,所以我认为比较调整大小前后的宽度是个好主意。所以我创建了这个函数来比较前后的宽度,如果宽度不同则运行 resize(),但它没有按预期工作,控制台日志显示不同的文档宽度,即使我只是改变了屏幕的高度(使用 Chrome 开发者工具)。

知道哪里出了问题,或者我怎样才能防止 responsive 函数在高度变化时启动?

function resizeWidth() {
var existingWidth = $(document).width();

$(window).resize(function() {
var newWidth = $(document).width();
if (existingWidth != newWidth) {
$(window).resize(responsive);
console.log(existingWidth);
console.log(newWidth);
};
});
};

$(window).resize(resizeWidth);

最佳答案

首先,您多次将处理程序附加到 resize 事件。一个加载,然后 每次 调整大小和调用 resizeWidth 时另一个。您应该删除该函数中的处理程序。另外,我猜你只是想调用 responsive() 函数,而不是在宽度改变时附加另一个调整大小处理程序。

您遇到的主要问题是 existingWidth 的范围不够小,无法在多个事件中看到它。你可以让它成为全局性的,尽管这通常被认为是不好的做法。相反,您可以使用 data 属性,如下所示:

function resizeWidth() {
var existingWidth = $(document).data('resize-width');
var newWidth = $(document).width();
if (existingWidth != newWidth) {
responsive();
$(document).data('resize-width', newWidth);
};
};

$(window).resize(resizeWidth);

关于javascript - 仅在调整窗口宽度大小时调用 jquery 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27844214/

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