获取一个空的JQuery对象

时间:2009-05-22 10:59:02

标签: jquery

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

此外,对于某些选择值,会显示一条额外的消息。

为了检查是否需要隐藏额外的消息,我保留了一个名为Previous的变量。执行处理程序后,我检查Previous是否为null或者大小是否为0。

初始化Previous到一个空的JQuery对象会很好,这样就不必对null进行额外的检查。

执行$()会返回大小为1的对象。

有没有办法创建一个空的Jquery对象?

//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; } };

但这似乎有点矫枉过正。

4 个答案:

答案 0 :(得分:212)

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

$([])

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

$()

答案 1 :(得分:21)

$();
  

返回空集

     

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

来源:api.jquery.com

答案 2 :(得分: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();
      }
    });
  });
});

答案 3 :(得分:-1)

尝试

 var new = $([]);

我不是一个好的程序员,但它给了你一个空对象:))