2012-06-10 13 views
8

私は多くの人々は、DOM要素は、例えば(のCoffeeScript)、イベントを割り当てる前に存在するかどうかをチェックしてください:イベントを割り当てる前に要素が存在するかどうかを確認する必要がありますか?

$ -> 
    if($("#progressbar").length > 0) 
     $("#progressbar").progressbar(value: 0) 

これは必要ですか?とにかく、要素が存在するかどうかに関係なく、イベントを追加するだけで、パフォーマンスが低下しますか?

+2

は、jQueryのですか? –

+0

最初にエラーが発生すると思いますか? – thescientist

+0

これは、Coffeescriptからストレートjavascriptに変換されます。このイベントはユーザーの介入なしにロードされるため、エラーは表示されません(下記のgabrielhilalの回答を参照)。 –

答えて

12

jQueryのすべてのメソッド呼び出しは.each関数でラップされています。したがって、要素が存在するかどうかの確認は通常は不要です。セットが空であれば、呼び出された関数の繰り返しはありません。与えられた例はその良い例です。$('#progressbar').progressbar()を直接呼び出すだけで損害やパフォーマンス上のペナルティはありません。

あなたはあなたがDOMを操作または要素の存在に応じて、いくつかの高価な操作をやっているせいか、それは複雑なセレクタの特別な場合は、あなたが電話をキャッシュすることを確認し、それを行うにしたいん

specialThings = $('section .special') 

if specialThings.length > 0 
    doStuffWith specialThings 

または代替として、CoffeeScriptののVaRの安全性を活かし:

if (specialThings = $ 'section .special').length 
    doStuffWith specialThings 
+0

それは感謝します、ありがとう! –

関連する問題