2009-05-22 14 views
106

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

さらに、選択の値によっては、表示される余分なメッセージがあります。

余分なメッセージを非表示にする必要があるかどうかを確認するために、Previousという変数を保持します。ハンドラが実行されると、Previousがnullかどうか、またはサイズが0であるかどうかがチェックされます。

空のJQueryオブジェクトにPreviousを初期化して、nullの余分なチェックをしなくてもいいです。

$を(行う)は、空のjQueryオブジェクトを作成する方法はあります1.

の大きさを持つオブジェクトを返しますか?私はこのような何かを行うことができ、最悪の場合には

 
//Init function. 
$(function(){ 
//Hold the previously selected object for the account type selection. 

var Previous = null; //Here is where I would like to initialize. 
         //something like Previous = $(); 


$("SELECT[name='AccountType']").change(
    function() { 
     //Hide Previous message if there was one. 
     if(Previous == null || Previous.size() > 0){ 
      Previous.hide(); 
     } 

     //Show the message if found and save it as previous. 
     Previous = $("#"+this.value+"_Msg").show(); 

     //Get fisrt question 
     var FirstQuestion = $(".FirstQuestion"); 
     if(this.value === ''){ 
      FirstQuestion.hide(); 
     }else{ 
      //Manually show FirstQuestion. 
      FirstQuestion.show(); 
     } 
    }); 
} 

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

が、それはやり過ぎのように思えます。

答えて

197

これは空のjQueryオブジェクトを作成:更新

​​

を:jQueryのの新しいバージョン(1.4以降)では 、あなたが使用することができます。

$() 
+6

+1素敵な答えは、私は、これは '$()'と異なっているかを確認していないことの思考:) –

+0

をしたんだろう決して。誰も光を投げることができますか? – cregox

+3

jQuery 1.4では、そうではありません。質問はその前に尋ねられた。ありがとうございます。 – Magnar

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(); 
    }); 
}); 

多くを。基本的に何を表示し、隠すべきかを示すためのクラスを与えて、追跡は必要ありません。代替は:jQueryの1.4のよう

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

空のセットを返す

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

出典:api.jquery.com

+5

ステートメントをバックアップするためのリンク(http://api.jquery.com/jQuery/#jQuery1)を提供すると、より多くのアップが得られます:)。 – studgeek

関連する問題