要素が存在するかどうかに応じて、2 つの値のいずれかを変数に割り当てようとしています。私はこのようなものがうまくいくはずだと思った...
$optsH = function(){
if ( jQ('#options').length > 0 ) {
return jQ('#options').outerHeight();
} else {
return 0;
}
}
...しかし、いいえ。
これは簡単なはずですが、長い一日でした。
要素が存在するかどうかに応じて、2 つの値のいずれかを変数に割り当てようとしています。私はこのようなものがうまくいくはずだと思った...
$optsH = function(){
if ( jQ('#options').length > 0 ) {
return jQ('#options').outerHeight();
} else {
return 0;
}
}
...しかし、いいえ。
これは簡単なはずですが、長い一日でした。
関数を呼び出すのを忘れただけです。
$optsH = (function(){
if ( jQ('#options').length > 0 ) {
return jQ('#options').outerHeight();
} else {
return 0;
}
})()
ただし、最適化したい場合は、これがはるかに優れた方法です。
$optsH = jQ('#options').outerHeight() || 0;
セレクターが要素と一致しない場合、outerHeight呼び出しは null を返し、null は偽であるため、次のようなことができるはずです。
$optsH = jQ('#options').outerHeight() || 0;
(今はテストできませんが、うまくいくはずです。)
あなたはこのようにすることができます
$(document).ready(function(){
$('#input_field').val($('#options').length > 0 ? $('#options').outerHeight() : 0);
});
要素が存在しない場合jQ('#options')、空のコレクションが返されますが、なぜ別のチェックが行われるのでしょうか?