获取一个空的JQuery对象

在下面的代码中,我在select框上设置了一个更改处理程序,以根据select的值显示和隐藏一些后续问题。

此外,对于select的一些值,还有一个额外的消息被显示。

为了检查是否需要隐藏额外的消息,我保留了一个名为Previous的variables。 在执行处理程序时,我检查前面是否为空或者大小是否为0。

这将是很好的初始化一个空的JQuery对象,以便不必额外检查null。

做一个$()返回一个大小为1的对象。

有没有办法创build一个空的JQuery对象?

 //初始化函数
 $(函数(){
 //保留之前select的对象以进行帐户typesselect。

 var Previous = null;  //这里是我想要初始化的地方
                       //像Previous = $();


 $( “SELECT [名= 'ACCOUNTTYPE']”)。变化(
     function(){
         //隐藏上一条消息,如果有的话。
         if(Previous == null || Previous.size()> 0){ 
             Previous.hide();
         }

         //显示消息,如果find并保存为前。
         Previous = $(“#”+ this.value +“_ Msg”)。show();

         //获取最新的问题
         var FirstQuestion = $(“。FirstQuestion”);
         if(this.value ===''){
             FirstQuestion.hide();
         }其他{
             //手动显示FirstQuestion。
             FirstQuestion.show();
         }
     });
 }

在最糟糕的情况下,我可以这样做:

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

但这似乎是矫枉过正。

这会创build一个空的jQuery对象:

$([]) 

更新:在较新版本的jQuery(1.4+)中,可以使用:

 $() 
 $(); 

返回一个空集

从jQuery 1.4开始,调用不带参数的jQuery()方法返回一个空的jQuery集合(具有0的.length属性)。 在以前的jQuery版本中,这将返回一个包含文档节点的集合。

资料来源: api.jquery.com

我的build议是不要这样做。 有很多简单的方法来做到这一点。 考虑:

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

更容易。 基本上给class级指出什么显示和隐藏,然后没有跟踪要求。 另一种方法是:

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