在窗口调整大小时禁用 jquery 函数

Posted

技术标签:

【中文标题】在窗口调整大小时禁用 jquery 函数【英文标题】:Disabling jquery functions on window resize 【发布时间】:2016-05-03 20:26:53 【问题描述】:

我目前在 wordpress 网站上有以下代码。如果 scrollTop 小于导航栏的高度,则滚动功能隐藏购物车按钮。这样在移动设备上,购物车按钮(固定在右上角)不会阻止折叠的菜单按钮。我希望在宽度大于 1024 像素的窗口上禁用此功能,因为我已尝试使用窗口调整大小功能。

jQuery(document).scroll(function() 
    var y = jQuery(this).scrollTop();
    if (y > jQuery('.x-navbar-inner').height()) 
        jQuery('.x-menu-item-woocommerce').fadeIn(1000);
     else 
        jQuery('.x-menu-item-woocommerce').fadeOut(1000);
    
);

jQuery(window).resize(function()
    if (jQuery(window).width() >= 1024)   
        jQuery('.x-menu-item-woocommerce').show();
         
);

我不确定如何让它发挥作用。如图所示,我尝试将滚动功能包装在窗口调整大小功能周围,但这不起作用。

jQuery(window).resize(function()
    jQuery(document).scroll(function() 
    var y = jQuery(this).scrollTop();
    if (y > jQuery('.x-navbar-inner').height()) 
        jQuery('.x-menu-item-woocommerce').fadeIn(1000);
     else 
        jQuery('.x-menu-item-woocommerce').fadeOut(1000);
    
);


    if (jQuery(window).width() >= 1024)   
        jQuery('.x-menu-item-woocommerce').show();
         
);

【问题讨论】:

【参考方案1】:

您可以使用off() 删除监听器。

由于您可能想再次实现它,因此将代码移至处理函数是最干净的

在调整大小处理程序中包装滚动开/关,然后在页面加载时触发调整大小

function scroller()
   //your scroll stuff


jQuery(window).resize(function()

       if (jQuery(window).width() >= 1024) 

              jQuery('.x-menu-item-woocommerce').show();
              jQuery(window).off('scroll');

        else
             jQuery(window).scroll(scroller);
           
// trigger event on page load
).resize();

【讨论】:

以上是关于在窗口调整大小时禁用 jquery 函数的主要内容,如果未能解决你的问题,请参考以下文章

当鼠标悬停在边框上时,如何完全禁用调整窗口大小,包括调整大小图标?

窗口上的Javascript调整大小结束

如何在窗口调整大小时隐藏 Facebook 聊天框?

在窗口调整大小时使用 jquery 的全屏图像?

在窗口调整大小时调整图像地图大小

窗口事件上的JQuery函数:结合加载和调整大小[重复]