コンテキスト:私は(PHPのセッションのフォールバック付き)のHTMLのlocalStorage APIを使用していますfavouriting システムを構築しています。ふぁぼ項目が ページ上にある場合は、JSでクラスの好きな 'を追加...要素が最初に存在するかどうか確認する必要がありますか?
私は要素のidがページ上に存在するかどうかわからない場合。それが最初に存在するかどうかを確認する方が良いか、またはjQueryがfalse
を効率的に返しますか?
コンテキスト:私は(PHPのセッションのフォールバック付き)のHTMLのlocalStorage APIを使用していますfavouriting システムを構築しています。ふぁぼ項目が ページ上にある場合は、JSでクラスの好きな 'を追加...要素が最初に存在するかどうか確認する必要がありますか?
私は要素のidがページ上に存在するかどうかわからない場合。それが最初に存在するかどうかを確認する方が良いか、またはjQueryがfalse
を効率的に返しますか?
。
if ($('#item_123').length === 1) {
$('#item_123').remove();
}
VS
$('#item_123').remove(); //this turned out slower for me in chrome 13
Hm、Chrome 12では私の方が速いことが判明しました。また、[ここには正しいタグのリビジョンがあります](http://jsperf.com/jquery-check-for-null-selector-or-just-perform-method2/4 )。 – brymck
テストでは、一致する要素がないので、最初の例では '$( '#item_123')。remove();が実行されません。このように、あなたがしているのは '$( '#item_123')。length === 1'を' $( '#item_123')。だから、 '.length'プロパティにアクセスする方が' .remove() 'メソッドを呼び出すよりもうまくいくでしょう。 – user113716
私をjsperfの方向に送信してくれてありがとう – Haroldo
いずれにせよ、常に$()
を実行するつもりです。したがって、そのメソッドの結果を参照する変数を保持し、存在するかどうかをチェックすることで効率の損失(または無視できる損失)はありません。
おそらくそうではありません。 jQueryが一致するものが見つからない場合は、何も列挙されずに移動します。
var $favorite = $("#favorite");
if ($favorite.length) { // Test whether it exists
$favorite.doSomething();
}
とより良いように記述されています:他の言葉では、このようなものは不要である似たような状況on jsperfためのテストコードがあり
$("#favorite").doSomething();
"お気に入りのアイテムがページ上にある" 場合はどのようにチェックしていますか? – Dogbert