javascript - jQuery toggleClass 不会触发调整浏览器大小的工作?
问题描述
我对某些代码有疑问。基本上在单击 div 时,应添加/删除类 'active-sort'(此类从顶部更改 .sort-by 的位置)。在页面加载时它工作得很好,但由于某种原因,当浏览器调整大小时,toggleClass 并不总是有效(有时会,有时不会)。
我对此并不满意,所以希望有一双新的眼睛能够立即看到我做错了什么。任何帮助,将不胜感激。
function toggleSortBy() {
var toggle = $('.sort-banner-row'),
sortBy = $('.sort-by');
if ($(window).width() > 1024) {
toggle.click(function(){
sortBy.toggleClass('active-sort');
});
} else {
// other code here for smaller devices
}
};
$(window).on('load resize', function() {
toggleSortBy();
});
解决方案
您可能不需要 resize 事件,因为您已经在点击处理程序中检查窗口大小
var toggle = $('.sort-banner-row'),
sortBy = $('.sort-by');
toggle.click(function(){
if ($(window).width() > 1024) {
sortBy.toggleClass('active-sort');
} else {
// other code here for smaller devices
}
});
但如果你这样做,你应该去抖动调整大小事件 //css-tricks.com/snippets/jquery/done-resizing-event
那么您可以执行以下操作:
var toggle = $('.sort-banner-row'),
sortBy = $('.sort-by'),
isMobile = false;
toggle.click(function(){
if (isMobile) {
sortBy.toggleClass('active-sort');
} else {
// other code here for smaller devices
}
});
$(window).on('load resize', function() {
// don't forget to debounce you'll see why later on in your development.
isMobile = ($(window).width() > 1024) ? false : true;
});
推荐阅读
- java - 如何使用 Java Spring Boot 更新 MognoDB 中的数组字段?
- select - 添加到购物车 - 从带有添加到购物车按钮的下拉变体选择更改为 Shopify / Liquid 上每个变体的单个添加到购物车按钮
- linker - 在调试信息压缩标志的各种组合下,汇编器和链接器之间的压缩调试信息如何流动?
- python - 使用 Paramiko (Python) 通过 SSH 执行 smartctl 命令时没有输出
- android - Android Firebase:如何创建适用于我现有通知系统的通知通道
- json - MySQL JSON 数组 - 按最后一个键排序
- c++ - 对实现文件中定义的构造函数的未定义引用
- javascript - 如何将现有库添加为依赖于我的新库?反应原生
- c++ - C++ 无法迭代函数返回的对象数组,段错误
- spring-boot - 在resilience4j中重试+断路器