$(window).resize();不起作用



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中检查了这个代码。

最后两行似乎是这里的问题:

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

应为:

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

注意()updateBodySize中删除-您的目标是将函数updateBodySize传递给.ready.resize,而不是其结果。通过调用函数,您所做的是将updateBodySize()的结果传递给.ready.resize函数,实际上:

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

正如您所注意到的,它除了updateBodySize()在您第一次(两次)调用它之外什么都不做。删除(),它将被视为您期望的事件处理程序。

PS

除非你正在使用的第一块

var x = $(window).width();
var y = $(window).height();
var z = $('#card').height();
var a = z + 140;
var b = 1.78 * y;
var c = 1.78 * a;

在您的函数块之前,您可以将其删除,因为您在函数内部重新定义了var,所以它在任何时候被调用时都会独立计算它们。

我认为你必须使用这个,因为按照你的方式,函数被执行,函数的返回值被设置为回调函数,这将不起作用:

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

试试这个:

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

或者你可以试试这个:

window.onresize=updateBodySize;