jQuery を使用しており、ページ内の要素の存在を確認したいと考えています。次のコードを書きましたが、機能しません。
if($("#btext" + i) != null) {
//alert($("#btext" + i).text());
$("#btext" + i).text("Branch " + i);
}
要素の存在を確認するにはどうすればよいですか?
jQuery を使用しており、ページ内の要素の存在を確認したいと考えています。次のコードを書きましたが、機能しません。
if($("#btext" + i) != null) {
//alert($("#btext" + i).text());
$("#btext" + i).text("Branch " + i);
}
要素の存在を確認するにはどうすればよいですか?
jQuery FAQを確認してください...
セレクターによって返される jQuery コレクションの length プロパティを使用できます。
if ( $('#myDiv').length ){}
(私は答えを投票するのに十分な評判を持っていないようです...)
ウルフは次のように書いています。
未定義または null オブジェクトで length プロパティを呼び出すと、IE および Webkit ブラウザーが失敗します。
代わりにこれを試してください:
// NOTE!! THE FOLLOWING IS WRONG; DO NOT USE! -- EleotleCram if($("#something") !== null){ // do something }
また
// NOTE!! THE FOLLOWING IS WRONG; DO NOT USE! -- EleotleCram if($("#something") === null){ // don't do something }
未定義または null オブジェクトで length プロパティを呼び出すとブラウザーが失敗するのは事実ですが、jQuery のセレクター ($('...')) の結果が null または未定義になることはありません。したがって、コードの提案は意味がありません。他の回答のいずれかを使用すると、より理にかなっています。
(Update 2012) 人々はコードを見て、この答えはリストのかなり上位にあるため: ここ数年、私はこの小さなプラグインを使用しています:
jQuery.fn['any'] = function() {
return (this.length > 0);
};
$('div').any()は$('div').lengthよりも読みやすいと思います。さらに、タイプミスに苦しむこともありません: $('div').ayn()は実行時エラーを返します、$('div'). length は、ほとんどの場合、暗黙のうちに常に偽になります。
__
2012 年 11 月の編集:
1) 人々はコードを見て、コードの周りに書かれていることを読まない傾向があるため、Wolf の引用されたコードに 2 つの大きな注意書きを追加しました。
2) この状況で使用する小さなプラグインのコードを追加しました。
ルックアップ関数は、一致する要素の配列を返します。長さがゼロかどうかを確認できます。要素を一度だけ検索し、必要に応じて結果を再利用するように変更されていることに注意してください。
var elem = $("#btext" + i);
if (elem.length != 0) {
elem.text("Branch " + i);
}
また、テキスト関数だけを使用してみましたか?要素が存在しない場合は何もしません。
$("#btext" + i).text("Branch " + i);
jquery $() 関数は常に null 以外の値を返します - セレクターのクレタリアに一致する要素を意味します。要素が見つからなかった場合、空の配列が返されます。したがって、コードは次のようになります-
if ($("#btext" + i).length){
//alert($("#btext" + i).text());
$("#btext" + i).text("Branch " + i);
}
jQuery 1.4 では $.isEmptyObject 関数を取得できますが、私たち貧しい Drupal 開発者のように古いバージョンの jQ を使用せざるを得ない場合は、次のコードを使用するだけです。
// This is a function similar to the jQuery 1.4 $.isEmptyObject.
function isObjectEmpty(obj) {
for ( var name in obj ) {
return false;
}
return true;
}
次のように使用します。
console.log(isObjectEmpty(the_object)); // Returns true or false.
何を選択しても、関数$()
は常に jQuery オブジェクトを返すため、テストには使用できません。最善の方法 (唯一ではないにしても) は、size()
上記で説明したように、関数またはネイティブの長さプロパティを使用することです。
if ( $('selector').size() ) {...}
「未定義」の使用はどうですか?
if (value != undefined){ // do stuff }
if ( $('#whatever')[0] ) {...}
すべてのネイティブ jQuery メソッドによって返される jQuery オブジェクトは配列ではなく、多くのプロパティを持つオブジェクトです。それらの1つは「長さ」プロパティです。size() または get(0) または get() をチェックすることもできます - 'get(0)' は最初の要素、つまり $(elem)[0] にアクセスするのと同じように機能します
$("#selector").get(0)
そのようなnullでチェックするために使用します。get は dom 要素を返しますが、それまでは長さプロパティを確認する必要がある配列を扱っています。個人的には、null 処理の長さチェックが好きではありません。何らかの理由で混乱します :)
length プロパティを使用すると、これを行うことができます。
jQuery.fn.exists = function(){return ($(this).length < 0);}
if ($(selector).exists()) {
//do somthing
}
if (typeof($("#btext" + i)) == 'object'){
$("#btext" + i).text("Branch " + i);
}
未定義またはnullオブジェクトでlengthプロパティを呼び出すと、IEおよびWebkitブラウザが失敗します。
代わりにこれを試してください:
if($("#something") !== null){
// do something
}
また
if($("#something") === null){
// don't do something
}