各キーダウン イベントで以下のコードを実行するテキスト フィールドがあるとします。
if( $('#my_input').val() == '' )
$('#my_span').html('my input is blank');
else
$('#my_span').html('My input is not blank');
明らかに、何か (要素) の状態を既存の状態に設定する可能性のあるコードを実行し#my_span
ていますが、これは非効率的です。しかし、私は代替手段が何であるかについて興味がありますか? 次のようなチェックを追加します。
if ( $('#my_input').val() == '' ){
if ( $('#my_span').html() != 'my input is blank' )
$('#my_span').html('my input is blank');
}
else if ( $('#my_span').html() != 'My input is not blank' )
$('#myspan').html('My input is not blank');
後者はより効率的ですか?私にはもっと「正しい」ように思えますが、明らかにコードが多く、最初の例よりもどれだけ効率的かはわかりません。
前者には常にDOM操作が含まれ、相対的な効率の計算に影響することは知っていますが、以前にDOMに関連しないコードでこのような状況に遭遇したことがあるので、すべての場合に最適なアプローチは何ですか. 何かの値を新しい値に設定する前に、その値を常に追加チェックする必要がありますか?
編集:
私の最終バージョンでは、実際にここでの回答を組み合わせて使用しているため、すばらしい回答をありがとうございます。要約すると、私は今:
- jquery オブジェクトをクロージャーにキャッシュする
- 状態を使用して、新しい状態への割り当てを決定します
また余談ですが、キーダウンの setTimeout は、入力フィールドの値をすぐに取得するための非常に優れた方法です。再度、感謝します。