结合onload和onresize(jQuery)

时间:2009-12-29 14:04:45

标签: jquery resize window

我想在加载和调整大小时调用该函数。

有更好的方法可以更紧凑地重写这个吗?

$('.content .right').width($(window).width() - (480));
$(window).resize(function(e) {
    $('.content .right').width($(window).width() - (480));
});

5 个答案:

答案 0 :(得分:106)

您可以单独绑定到resize事件,并在加载时自动触发此事件:

// Bind to the resize event of the window object
$(window).on("resize", function () {
    // Set .right's width to the window width minus 480 pixels
    $(".content .right").width( $(this).width() - 480 );
// Invoke the resize event immediately
}).resize();

最后一次.resize()调用将在加载时运行此代码。

答案 1 :(得分:53)

我认为最好的解决方案就是将它也绑定到load事件:

$(window).on('load resize', function () {
    $('.content .right').width( $(this).width() - 480 );
});

答案 2 :(得分:15)

很高兴发现重复逻辑并将其分解为函数:

function sizing() {
  $('.content .right').width($(window).width() - 480);
}

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

答案 3 :(得分:4)

我将结合其他两个答案的最佳部分。首先,将重复的代码移动到函数中。其次,不要污染全局命名空间。

$(document).ready(function() {
  var adjust_size = function() {
    $('.content .right').width($(window).width() - 480);
  };
  adjust_size();
  $(window).resize(adjust_size);
});

我将函数命名为adjust_size,因为我更喜欢动词用于面向动作的函数。

答案 4 :(得分:2)

简单方法:

html:
<body onload="$(window).resize()"> 

javascript:
$(window).resize(function () { 
...
});