ロード時およびサイズ変更時に関数を呼び出したい。
これをよりコンパクトに書き換えるより良い方法はありますか?
$('.content .right').width($(window).width() - (480));
$(window).resize(function(e) {
$('.content .right').width($(window).width() - (480));
});
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()
呼び出しは、ロード時にこのコードを実行します。
私は、最善の解決策はそれをロードイベントにもバインドすることだと思います:
$(window).on('load resize', function () {
$('.content .right').width( $(this).width() - 480 );
});
繰り返しのロジックを見つけて、代わりに関数に分割するのは良いことです。
function sizing() {
$('.content .right').width($(window).width() - 480);
}
$(document).ready(sizing);
$(window).resize(sizing);
他の2つの答えの最良の部分を組み合わせます。最初に、繰り返しコードを関数に移動します。第二に、グローバル名前空間を汚染しないでください。
$(document).ready(function() {
var adjust_size = function() {
$('.content .right').width($(window).width() - 480);
};
adjust_size();
$(window).resize(adjust_size);
});
アクション指向の関数には動詞が好まれるので、関数にadjust_size
という名前を付けました。
簡単な方法:
html:
<body onload="$(window).resize()">
javascript:
$(window).resize(function () {
...
});