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

时间:2014-03-23 02:03:10

标签: javascript jquery

所以我有这个脚本来检测窗口宽度,并在满足if语句时执行某些操作。 是的,如果"宽度"小于980,但如果我调整窗口大小超过180,它仍然运行我不想要的指令。 我检查了"宽度"使用$(' #jqWidth')。html(width);如果值随窗口而变化 变化和变化。它似乎:

    随着窗口宽度的变化,if语句中的
  1. 变量没有被更新(但我怀疑这个)。或
  2. $(window).scroll(即使if语句不满意,function()仍在运行。
  3. 所以基本上我想在宽度为980或更大时,在if语句中禁用slideUp()和slideDown()或$(window).scroll函数。

    谢谢!

    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();
    });
    

    添加&#34;否则&#34;在声明上,它工作。感谢@adeneo的提示和@miushock

1 个答案:

答案 0 :(得分:0)

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

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

我想补充一点这个答案,

以函数文字的形式定义处理程序方法也应该起作用

var jqUpdateSize = function () {...}

我不确定它是jquery还是浏览器实现,但函数文字似乎被视为更好的对象