获取一个空的JQuery对象


120

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

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

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

最好将Previous初始化为空的JQuery对象,这样就不必对null进行额外的检查。

进行$()返回大小为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; };

但这似乎太过分了。

Answers:


222

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

$([])

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

$()

谢谢。那么,哪一种更好地保持与以前和以后版本的兼容性?-无论如何,我仍然不知道为什么这两种方法都不起作用。也许我应该提出一个问题,但是我通过使用PHP而不是jQuery解决了它,因此我现在无法真正对其进行深入研究。
cregox 2011年

2
精细测试:$()。add($(“ div”))。css('color','red');
zloctb

23
$();

返回空集

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

资料来源:api.jquery.com


6
提供链接(api.jquery.com/jQuery/#jQuery1)来备份您的语句可能会给您带来更多麻烦 :)。
studgeek 2011年

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,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.