在下面的代码中,我在选择框上设置了一个更改处理程序,以根据选择的值显示和隐藏一些后续问题。
此外,对于某些选择值,会显示一条额外的消息。
为了检查是否需要隐藏额外的消息,我保留了一个名为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; } };
但这似乎有点矫枉过正。
答案 0 :(得分:212)
这会创建一个空的jQuery对象:
$([])
<强>更新强> 在较新版本的jQuery(1.4+)中,您可以使用:
$()
答案 1 :(得分:21)
$();
返回空集
从jQuery 1.4开始,调用不带参数的
jQuery()
方法会返回一个空的jQuery集(.length
属性为0)。在以前的jQuery版本中,这将返回一个包含文档节点的集合。
答案 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 = $([]);
我不是一个好的程序员,但它给了你一个空对象:))