175

jQuery を使用しており、ページ内の要素の存在を確認したいと考えています。次のコードを書きましたが、機能しません。

if($("#btext" + i) != null) {
    //alert($("#btext" + i).text());
    $("#btext" + i).text("Branch " + i);
}

要素の存在を確認するにはどうすればよいですか?

4

13 に答える 13

257

jQuery FAQを確認してください...

セレクターによって返される jQuery コレクションの length プロパティを使用できます。

if ( $('#myDiv').length ){}
于 2009-01-25T13:16:35.843 に答える
64

(私は答えを投票するのに十分な評判を持っていないようです...)

ウルフは次のように書いています。

未定義または 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) この状況で使用する小さなプラグインのコードを追加しました。

于 2011-01-17T11:10:09.717 に答える
16

ルックアップ関数は、一致する要素の配列を返します。長さがゼロかどうかを確認できます。要素を一度だけ検索し、必要に応じて結果を再利用するように変更されていることに注意してください。

var elem = $("#btext" + i);
if (elem.length != 0) {
   elem.text("Branch " + i);
}

また、テキスト関数だけを使用してみましたか?要素が存在しない場合は何もしません。

$("#btext" + i).text("Branch " + i);
于 2009-01-25T13:15:49.137 に答える
12

jquery $() 関数は常に null 以外の値を返します - セレクターのクレタリアに一致する要素を意味します。要素が見つからなかった場合、空の配列が返されます。したがって、コードは次のようになります-

if ($("#btext" + i).length){
        //alert($("#btext" + i).text());
    $("#btext" + i).text("Branch " + i);
}
于 2009-01-25T13:26:19.353 に答える
5

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.
于 2011-06-08T16:42:56.727 に答える
5

何を選択しても、関数$()は常に jQuery オブジェクトを返すため、テストには使用できません。最善の方法 (唯一ではないにしても) は、size()上記で説明したように、関数またはネイティブの長さプロパティを使用することです。

if ( $('selector').size() ) {...}                   
于 2010-10-02T06:53:03.633 に答える
5

「未定義」の使用はどうですか?

if (value != undefined){ // do stuff } 
于 2016-07-27T16:23:44.270 に答える
3
if ( $('#whatever')[0] ) {...}

すべてのネイティブ jQuery メソッドによって返される jQuery オブジェクトは配列ではなく、多くのプロパティを持つオブジェクトです。それらの1つは「長さ」プロパティです。size() または get(0) または get() をチェックすることもできます - 'get(0)' は最初の要素、つまり $(elem)[0] にアクセスするのと同じように機能します

于 2009-01-25T14:02:40.357 に答える
1

$("#selector").get(0)そのようなnullでチェックするために使用します。get は dom 要素を返しますが、それまでは長さプロパティを確認する必要がある配列を扱っています。個人的には、null 処理の長さチェックが好きではありません。何らかの理由で混乱します :)

于 2011-04-09T20:27:52.993 に答える
1

length プロパティを使用すると、これを行うことができます。

jQuery.fn.exists = function(){return ($(this).length < 0);}
if ($(selector).exists()) { 
   //do somthing
}
于 2012-05-31T12:26:52.413 に答える
-4
if (typeof($("#btext" + i)) == 'object'){
    $("#btext" + i).text("Branch " + i);
}
于 2009-12-26T13:21:15.390 に答える
-7

未定義またはnullオブジェクトでlengthプロパティを呼び出すと、IEおよびWebkitブラウザが失敗します。

代わりにこれを試してください:

if($("#something") !== null){
  // do something
}

また

if($("#something") === null){
  // don't do something
}
于 2010-12-17T02:15:29.600 に答える