if语句中的函数即使“if”语句仍然运行;不再满足

The function inside the "if statement" still run even if the "if statement" is no longer satisfied

本文关键字:if 语句 运行 不再 满足 函数      更新时间:2023-09-26

所以我有这个脚本来检测窗口宽度,并做一定的动作,如果满足if语句。是的,如果"宽度"小于980,它可以工作,但如果我调整窗口的大小超过180,它仍然运行我不想要的指令。我检查了"宽度"使用$('#jqWidth').html(宽度);如果值随窗口的变化而变化变化和变化。就好像:

    if语句中的
  1. 变量没有随着窗口宽度的变化而更新(但我怀疑这一点)。或
  2. $(window).scroll(function()仍在运行,即使if语句不满足。

我想禁用slideUp()和slideDown()或者$(window)。当宽度大于等于980时,在if语句中调用滚动函数。

谢谢!

function jqUpdateSize(){
// Get the width of the viewport
var width = $(window).width();
if(width < 980){
    $(".slideToggle").css({display:'none'});
    $(window).scroll(function() {
        if($(window).scrollTop() > 535) {
            $(".header").slideUp("slow");
        }
        if($(window).scrollTop() < 535) {
            $(".header").slideDown("slow");
        }      
    });
}
$('#jqWidth').html(width); //for testing purposes if width changes.
}
$(document).ready(jqUpdateSize);    // When the page first loads
$(window).resize(jqUpdateSize);     // When the browser changes size

编辑

function jqUpdateSize(){
// Get the width of the viewport
var width = $(window).width();
if(width < 980){
    $(".slideToggle").css({display:'none'});
    $(window).scroll(function() {
        if($(window).scrollTop() > 535) {
            $(".header").slideUp("slow");
        }
        if($(window).scrollTop() < 535) {
            $(".header").slideDown("slow");
        }      
    });
}
$('#jqWidth').html(width); //for testing purposes if width changes.
}else{
    $(window).unbind('scroll');
}
$(document).ready(function(){
    jqUpdateSize();
});
$(window).resize(function(){
    jqUpdateSize();
});

在语句中添加了"else",它就成功了。感谢@adeneo的提示和@ miusshock

处理程序没有正确链接到事件,尝试将其更改为

    $(document).ready(function(){
        jqUpdateSize();
    });
    $(window).resize(function(){
        jqUpdateSize();
    });

我想对这个答案再补充一点,

以函数字面量的形式定义处理程序方法也可以

var jqUpdateSize = function () {...}

我不确定这是jquery或浏览器实现,但函数字面量似乎被视为一个更好的对象