我遇到了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中查看了此代码。
答案 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;