$(窗口).resize();不起作用

时间:2013-11-29 14:30:41

标签: javascript jquery

我遇到了window.resize的问题。我的代码js / jquery就在这里

var x = $(window).width();
var y = $(window).height();
var z = $('#card').height();
var a = z + 140; // !!!zmienic gdy zmiana marginesu z gory lub paddingu (100 margin + 20x2 padding)
var b = 1.78 * y;
var c = 1.78 * a;
function updateBodySize(){
    x = $(window).width();
    y = $(window).height();
    z = $('#card').height();
    a = z + 140; // !!!zmienic gdy zmiana marginesu z gory lub paddingu (100 margin + 20x2 padding)
    b = 1.78 * y;
    c = 1.78 * a;
    if (c>b) {
        if (x>c) {
            $('body').css({'background-size': x + 'px auto'});
        }
        else {
            $('body').css({'background-size': 'auto ' + c + 'px'});
        }
        $('body').css({'height': a + 'px'});
    }
    else {
        if (x>b) {
            $('body').css({'background-size': x + 'px auto'});
        }
        else {
            $('body').css({'background-size': 'auto ' + b + 'px'});
        }
        $('body').css({'height': y + 'px'});
    }
}
$(document).ready(updateBodySize()); //kiedy zaladowany
$(window).resize(updateBodySize());  //kiedy zmiana rozmiaru

评论是波兰语,但它们并不重要。我希望每次调整浏览器大小时都运行函数updateBodySize,但现在这个函数只在文档准备就绪时运行(所以我知道函数工作正常)(行最后一行),看起来最后一行被忽略了。这行是错误的$(window).resize(updateBodySize());吗?或者是我的功能?我在Chrome 33中查看了此代码。

5 个答案:

答案 0 :(得分:4)

你的最后两行似乎是问题所在:

$(document).ready( updateBodySize() );
$(window).resize( updateBodySize() );

应该是:

$(document).ready( updateBodySize );
$(window).resize( updateBodySize );

请注意从()删除updateBodySize - 您的目标是将功能 updateBodySize传递给.ready和{{1} },而不是结果。通过调用函数,您正在做的是将.resize的结果传递给updateBodySize().ready函数,实际上:

.resize

正如你所注意到的那样,除了$(document).ready( null ); $(window).resize( null ); 你所谓的第一(2)次之外什么都没做。删除updateBodySize(),它将被视为您期望的事件处理程序。

<强> PS

除非您使用

的第一个块
()

在你的功能块之前,你可以删除它,因为你重新定义了里面的函数,所以它会在它被调用的任何时候独立地计算它们。

答案 1 :(得分:1)

我认为你必须使用它,因为你这样做,函数被执行并且函数的返回值被设置为回调函数,这将不起作用:

$(document).ready(function() {
    updateBodySize();
}); //kiedy zaladowany
$(window).resize(function() {
    updateBodySize();
});  //kiedy zmiana rozmiaru

答案 2 :(得分:0)

试试这个:

$(function(){updateBodySize();}); //kiedy zaladowany
$(window).resize(function(){updateBodySize();}); 

答案 3 :(得分:0)

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

答案 4 :(得分:0)

或者你可以试试这个:

window.onresize = updateBodySize;