[JS][jQuery] 要素の存在を確認する6通りのコードと実行速度
スポンサーリンク
JavaScriptまたはjQueryを使い、html要素が存在するかどうか調べる方法はいくつかあります。
jQueryを使ったやり方については、こちらで5つの方法が紹介されています。以下は三項演算子で短く書きなおしたものです。
( $("selector")[0] )? "有" : "無"; ( $("selector").length > 0 )? "有" : "無"; ( $("selector").get(0) )? "有" : "無"; ( $("selector").size() )? "有" : "無"; ( $("selector").is() )? "有" : "無";
これに加え、IDが設定されている要素の有無を調べるのなら、jQueryを使わずJavaScriptのみで以下のように書くのも良いでしょう。
( document.getElementById("id") != null )? "有" : "無";
では上で挙げた6つのうち、一番速い方法はどれでしょうか。Firefox+Firebugで計測してみました。
コード | 速度 |
---|---|
document.getElementById("id") != null | 0.019ms |
$("selector")[0] | 0.033ms |
$("selector").get(0) | 0.040ms |
$("selector").size() | 0.041ms |
$("selector").length | 0.069ms |
$("selector").is("*") | 0.169ms |
結果はJavaScriptのみで書いたコードが最速でした。jQueryの余計なコードを通していないのですから当然でしょうか。この程度の内容ならjQueryを使わずとも煩雑なコードにはなりませんし、存在を確認したい要素にIDが設定されているならば、document.getElementById("id") != null
で調べるのがいいでしょう。
jQueryを使う方法のなかで一番速いのは$("selecter")[0]
でした。シンプルな書き方ですし、IDを使っていない要素の有無を調べるならこの方法が良さそうです。そのほか、$("selector").get(0)
、$("selector").size()
、$("selector").length
もそれほど速度で劣るわけではありません。
$("selector").is("*")
はその他のものに比べて著しく遅いです。ワイルドカードを使っているせいかと思い、ワイルドカード無しでも計測してみましたが、やはり160msを超えてしまいました。$("selector").is("*")
は避けた方が良さそうです。
スポンサーリンク
JavaScriptカテゴリーの投稿
- [Gmaps.js] 地図をドラッグした後の中心座標を取得する
- [jQuery] 文字列が含まれているかどうかの判定
- 圧縮後のJavaScriptやHtmlを元に戻すWebサービス
- Google Code Prettify導入が超絶簡単になっていた
- [JavaScript] 全角を2、半角を1と数えるコード
- [JavaScript] 指定範囲内の整数からランダムな値を得る
- [JavaScript] sort()メソッドによる配列の並び替え
- シンタックスハイライター「Google Code Prettify」のカスタマイズ
- [JavaScript] オブジェクトにプロパティを追加
- [JS] 正規表現の特殊文字を置換するJavaScript版preg_quote()
jQueryカテゴリーの投稿
- [jQuery] $.ajaxのコールバック関数にcontextで値を渡す
- [jQuery] 文字列が含まれているかどうかの判定
- [jQuery] rowspanを持つtableで行の表示・非表示を切り替える
- [jQuery] find()とchildren()の使い分け
- jQueryとPHPでAJAX通信を行う
- [jQuery] $('form').change()でフォーム全体の変更を監視する
- [jQuery] 属性が存在するかどうかチェックするコード
- [jQuery] tableの内容を取得する
- [jQuery] clone()で操作対象のエレメントを元の位置に保つ
- [jQuery] index()でクリックされたhtml要素が何番目の要素かを知る