Jquery 针对特定 window 大小的函数

Jquery function on specific window size

我正在尝试使脚本仅在用户处于 1024 或更低时才有效。如果用户不调整 window 的大小,它可以正常工作。但是,当我在低于 1024 时触发点击事件,然后将大小调整为 1200 时,切换 类 已添加并且动画再次出现。

有什么建议吗?

if ($(window).width() <= 1024) {
    $("#primary-menu").click(function(){
        $(".main-navigation").removeClass("toggled");
        $(".cmn-toggle-switch").removeClass("active");
        $(".menu-item").toggleClass("animated").toggleClass("wow").toggleClass("fadeInUp");
    });

    $(".hamburger-menu-text").click(function(){
        $(".cmn-toggle-switch").toggleClass("active");
        $(".main-navigation").toggleClass("toggled");
        $(".menu-item").toggleClass("animated").toggleClass("wow").toggleClass("fadeInUp");
    });     
};

在点击事件中使用 if 语句

 $("#primary-menu").on('click',function(){
     if ($(window).width() <= 1024) {
        //..........
     }else{
        //..........
     }
});

检查文档准备就绪时的 window 宽度和 window 调整大小,并分配或删除 click 侦听器:

var primaryFunc = function() {
    $(".main-navigation").removeClass("toggled");
    $(".cmn-toggle-switch").removeClass("active");
    $(".menu-item").toggleClass("animated").toggleClass("wow").toggleClass("fadeInUp");
}

var hamFunc = function() {
    $(".cmn-toggle-switch").toggleClass("active");
    $(".main-navigation").toggleClass("toggled");
    $(".menu-item").toggleClass("animated").toggleClass("wow").toggleClass("fadeInUp");
} 

var resetElements = function() {
   // Unbind the click event
   $("#primary-menu").off('click');
   $(".hamburger-menu-text").off('click');

   // remove assigned classes from elements
}

var checkWin = function() {
   var w = $(window).width();
   if (w <= 1024) {
       $("#primary-menu").on('click', function() {
          primaryFunc();
       });
       $(".hamburger-menu-text").on('click', function() {
          hamFunc();
       });
   } else {           
       resetElements();
   }
}

在 dom 就绪和 window 调整大小时执行 checkWin()

$(document).ready(function() {
    checkWin();
})

$(window).resize(function() {
    checkWin();
});