获取一个空的jQuery对象

132
下面的代码中,我在下拉框上设置了一个更改处理程序,根据选择的值显示和隐藏一些后续问题。此外,在某些选择值的情况下,还会显示额外的消息。
为了检查是否需要隐藏额外消息,我保留了一个名为“Previous”的变量。在执行处理程序时,我将检查Previous是否为空或大小是否为0。
初始化一个空的JQuery对象会很好,这样就不必进行额外的null检查。
做$()将返回一个具有大小为1的对象。是否有方法可以创建一个空的Jquery对象?
//初始化函数。
$(function(){
//存储先前选定的帐户类型选择的对象。
var Previous = null; //此处我想初始化。 //例如Previous = $();
$("SELECT[name='AccountType']").change( function () { //如果有先前的消息,请隐藏它。 if(Previous == null || Previous.size() > 0){ Previous.hide(); }
//找到并显示消息,并将其保存为先前的。 Previous = $("#"+this.value+"_Msg").show();
//获取第一个问题 var FirstQuestion = $(".FirstQuestion"); if(this.value === ''){ FirstQuestion.hide(); }else{ //手动显示FirstQuestion。 FirstQuestion.show(); } }); }
在最坏的情况下,我可以这样做:
    var Previous = { size : function () { return 0; } };
但那似乎有点过头了。
4个回答

238

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

$([])

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

$()

谢谢。那么,哪一个更好地保持了与以前和未来版本的兼容性呢?- 无论如何,我仍然无法弄清楚为什么在我的情况下都没有起作用。也许我应该提出一个问题,但我通过使用PHP而不是jQuery解决了这个问题,所以现在我无法深入研究它了。 - cregox
2
优化测试:$().add($("div")).css('color','red'); - zloctb
如何在使用后使变量Values = {}为空。我在ajax调用成功后填充了这个对象。但是在使用后,我想将其清空,以便下一个请求遵循相同的模式。 - Mayur

24
$();

返回一个空集合

自 jQuery 1.4 版本起,调用没有参数的 jQuery() 方法将返回一个空的 jQuery 集(具有长度为 0 的 .length 属性)。在早期版本的 jQuery 中,这将返回一个包含文档节点的集合。

来源:api.jquery.com


6
提供链接(http://api.jquery.com/jQuery/#jQuery1)来支持你的陈述可能会让你得到更多的点赞 :)。 - studgeek
1
点赞了包含的源代码。始终拥有所有上下文可用是很棒的。相关段落的更直接链接为:https://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();
      }
    });
  });
});

0
尝试一下这个。
 var new = $([]);

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


你被踩是因为你重复了一篇既存的(而且非常陈旧的)答案。这对社区没有任何价值。 - isherwood

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接