$(窗口).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()); ? 或者是我的function? 我在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 ); 

正如你所注意到的那样,除了你调用它的第一(2)次updateBodySize()之外什么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; 

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

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

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

或者你可以试试这个:

window.onresize = updateBodySize;

试试这个:

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