空のJQueryオブジェクトを取得する


120

次のコードでは、選択ボックスに変更ハンドラを設定して、選択の値に基づいていくつかのフォローアップ質問を表示および非表示にします。

さらに、選択の一部の値については、追加のメッセージが表示されます。

追加のメッセージを非表示にする必要があるかどうかを確認するために、Previousという変数を保持しています。ハンドラーの実行時に、Previousがnullかどうか、またはサイズが0かどうかを確認します。

nullの追加チェックを実行する必要がないように、Previousを空のJQueryオブジェクトに初期化すると便利です。

$()を実行すると、サイズが1のオブジェクトが返されます。

空のJqueryオブジェクトを作成する方法はありますか?

//初期化関数。
$(function(){
//アカウントタイプを選択するために、以前に選択したオブジェクトを保持します。

var Previous = null; //ここが初期化したい場所です。
                      // Previous = $();のようなもの


$( "SELECT [name = 'AccountType']")。change(
    関数 () {
        //前のメッセージがあった場合はそれを非表示にします。
        if(Previous == null || Previous.size()> 0){ 
            Previous.hide();
        }

        //見つかった場合はメッセージを表示し、以前と同じように保存します。
        前= $( "#" + this.value + "_ Msg")。show();

        //最初の質問を取得
        var FirstQuestion = $( "。FirstQuestion");
        if(this.value === ''){
            FirstQuestion.hide();
        }そうしないと{
            //手動でFirstQuestionを表示します。
            FirstQuestion.show();
        }
    });
}

最悪の場合、次のようなことができます。

    var Previous = {size:function(){return 0; }};

しかし、それはやり過ぎのようです。

回答:


222

これにより、空のjQueryオブジェクトが作成されます。

$([])

更新: jQueryの新しいバージョン(1.4以降)では、以下を使用できます。

$()

ありがとう。それでは、以前のバージョンや将来のバージョンとの互換性を維持するためにどちらが優れているのでしょうか?-とにかく、どちらも私の場合にうまくいかなかった理由はまだわかりません。たぶん私はそれについての質問を開くべきですが、jQueryの代わりにPHPを使用してそれを解決したので、今はこれ以上掘り下げることができません。
cregox

2
細かいテスト:$()。add($( "div"))。css( 'color'、 'red');
zloctb 2013

23
$();

空のセットを返す

jQuery 1.4以降、jQuery()引数なしでメソッドを呼び出すと、空のjQueryセット(.lengthプロパティ0)が返されます。以前のバージョンのjQueryでは、ドキュメントノードを含むセットを返していました。

ソース:api.jquery.com


6
ステートメントをバックアップするためのリンク(api.jquery.com/jQuery/#jQuery1)を提供すると、おそらくさらにアップになります:)。
studgeek '25

1
含まれているソースに賛成。すべてのコンテキストを利用できるのは常に素晴らしいことです。関連する段落へのより直接的なリンクは次のようになります:api.jquery.com/jQuery/#returning-empty-set
ksadowski

3

私のアドバイスは、そのようにしないことです。これを行うにはもっと簡単な方法があります。考慮してください:

<select id="select" name="select">
  <option value="msg_1">Message 1</option>
  <option value="msg_2">Message 1</option>
  <option value="msg_3">Message 1</option>
</select>

<div class="msg_1 msg_3">
  ...
</div>

<div class="msg_1">
  ...
</div>

<div class="msg_2">
  ...
</div>

$(function() {
  $("#select").change(function() {
    var val = $(this).val();
    $("div." + val").show();
    $("div:not(." + val + ")").hide();
  });
});

はるかに簡単です。基本的に、何を表示し、何を非表示にするかを示すクラスを提供し、追跡は必要ありません。別の方法は次のとおりです。

$(function() {
  $("#select").change(function() {
    var val = $(this).val();
    $("div").each(function() {
      if ($(this).hasClass(val)) {
        $(this).show();
      } else {
        $(this).hide();
      }
    });
  });
});

-1

これを試して

 var new = $([]);

私は良いプログラマではありませんが、空のオブジェクトを与えます:))


既存の(そして非常に古い)回答を繰り返したため、反対票が出ています。それはコミュニティにどんな価値も追加しません。
isherwood
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.