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

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

最佳答案

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

$(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:

除非您使用的是第一个 block

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;

在函数 block 之前,您可以删除它,因为您在函数内部重新定义了这些变量,因此每次调用时它都会独立计算它们。

关于javascript - $(窗口).resize();不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20287999/

相关文章:

javascript - Backbone.js:如何在模型删除时解除事件绑定(bind)

javascript - 获取索引不是从 0 开始的数组中的第一个元素

javascript - jquery设置php生成的文本选项列表

jquery - XMLHttpRequest 不是使用 .setRequestHeader 设置的

javascript - 如何使用 jQuery 以相反的顺序附加 div 内容

javascript - Chrome webkitStorageInfo.requestQuota

javascript - 数组形状错误

javascript - 如何在javascript中选择多个加嵌套类

javascript - 根据另一个选择 Angular 过滤选择并保留第一行

javascript - 获取同一文件中 PHP 变量中选择框的 HTML 值