0

私は:

console.log($('#test'));

私はテストが存在しないことを知っています。console.logを実行すると、undefined/nullが出力されません。むしろ、それは空の配列のようなものを出力し、その配列をチェックすると、jQueryオブジェクト自体を返すように見えます。

私も試しました:

if ($('#test')){
    //do something
}

しかし、それでも機能しません。選択しているIDがページに存在するかどうか知りたいのですが。jQueryを使用してそれを行うにはどうすればよいですか?

4

7 に答える 7

4

これを行うのは20倍速いようなものです:

if (document.getElementById("test"))

jQuery操作と比較して、そのIDを持つDOMオブジェクトがページに存在するかどうかを判断するだけです。jQueryは多くのことを実行できますが、その一般的なセレクターエンジンと一般的なオブジェクト構造が必要ない場合、それは物事を行うための最も速い方法ではありません。

他の人が言っているように、存在しない$("#test")場合でも、は常に有効なjQueryオブジェクトです。オブジェクトが存在しない場合#testは、DOMオブジェクトを含まないjQueryオブジェクトになります(内部配列には)が含まれますが、それでも有効なオブジェクトです。#test$("#test").length === 0

于 2012-08-31T06:00:40.837 に答える
1

'if'ステートメントに'('および')'を使用し、返された配列の長さが0より大きいかどうかを確認します。

if ($('#test').length > 0){
    //do something
}
于 2012-08-31T05:37:19.830 に答える
1

このようなものを使用してください

if ($('#test').length > 0){
    alert('hi')
  }else
  {
     alert('hello')
  }

ライブデモ </p>

于 2012-08-31T05:37:47.040 に答える
1

このための最良の方法は、選択した要素の長さを確認することです

if ($('#test').length > 0){
    //do something
}

ただし、既存の関数を作成する場合は、jQueryを歓迎します。スクリプトに行を追加するだけです。

jQuery.fn.exists = function(){return this.length>0;}

これで、要素が存在するかどうかを確認できます

if ($(selector).exists()) {
  // Do something
}
于 2012-08-31T05:38:14.980 に答える
1

JavaScriptでは、オブジェクトは常に真実であるため、そのように使用すると常に条件が渡されます。

プロパティを確認する必要がありlengthます。の応答0偽物であり、期待どおりに機能します。

if ($('#test').length) { 
    // ...    
}

これは、その属性を持つ要素が存在しない場合document.getElementById()に返される、とは異なります。nullid

これが紛らわしい場合は、いつでも簡単なjQueryプラグインを作成できます。

$.fn.exists = function() {
    return !!this.length;
};

次に、jQueryコレクションを呼び出しexists()て、セレクターが少なくとも1つのアイテムと一致していることを確認できます。

于 2012-08-31T05:38:35.837 に答える
1

使用する

if ($('#test').length > 0){
    //do something
}

長さは、0の場合に選択されたアイテムの数を示し、IDテストを持つ要素はありません。

于 2012-08-31T05:39:23.247 に答える
0
console.log($('#test'));

これは、IDテストでDOMで見つかったオブジェクトを表すため、値を出力しません。値を取得する場合は、$( "#test")。val();を使用します。または$( "#test")。html();

存在を確認したい場合は、上記のように長さテストを行ってください。

また、生成された要素(DOMに追加したもの)の存在をテストする場合は、必ず.live(http://api.jquery.com/live/)をチェックアウトしてください。これは、ページの読み込み後に作成されるすべての要素に必要です。

于 2012-08-31T05:44:36.417 に答える