首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$(窗口).resize();不工作

$(窗口).resize();不工作
EN

Stack Overflow用户
提问于 2013-11-29 14:30:40
回答 5查看 8.8K关注 0票数 1

我对window.resize有意见。我的js/jquery代码在这里

代码语言:javascript
复制
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中检查了这段代码。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-11-29 14:53:57

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

代码语言:javascript
复制
$(document).ready( updateBodySize() );
$(window).resize( updateBodySize() );

应:

代码语言:javascript
复制
$(document).ready( updateBodySize );
$(window).resize( updateBodySize );

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

代码语言:javascript
复制
$(document).ready( null );
$(window).resize( null );

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

PS

除非您使用的第一个块

代码语言:javascript
复制
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;

在函数块之前,您可以删除它,因为您在函数中重新定义了那些变量,因此它将在调用时独立地计算它们。

票数 5
EN

Stack Overflow用户

发布于 2013-11-29 14:33:30

我认为您必须使用此方法,因为您正在执行该函数,并且函数的返回值被设置为回调函数,这将无法工作:

代码语言:javascript
复制
$(document).ready(function() {
    updateBodySize();
}); //kiedy zaladowany
$(window).resize(function() {
    updateBodySize();
});  //kiedy zmiana rozmiaru
票数 1
EN

Stack Overflow用户

发布于 2013-11-29 14:43:47

代码语言:javascript
复制
$( document ).ready(function() {
  $(window).resize(updateBodySize());
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20287999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档