获取一个空的JQuery对象
在以下代码中,我在选择框上设置了更改处理程序,以根据选择的值显示和隐藏一些后续问题。
此外,对于某些选择值,还会显示一条额外的消息。
为了检查是否需要隐藏额外的消息,我保留一个名为Previous的变量。 在执行处理程序时,我检查以查看Previous是否为空或大小为0。
这将是很好的初始化一个空的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; } };
但这似乎是矫枉过正。
这会创建一个空的jQuery对象:
$([])
更新:在较新版本的jQuery(1.4+)中,您可以使用:
$()
$();
返回空集
从jQuery 1.4开始,调用没有参数的jQuery()
方法会返回一个空的jQuery集(具有0的.length
属性)。 在之前的jQuery版本中,这将返回一个包含文档节点的集合。
资料来源:api.jquery.com
我的建议是不要那样做。 有很多简单的方法来做到这一点。 考虑:
<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();
}
});
});
});
链接地址: http://www.djcxy.com/p/96341.html
上一篇: Getting an empty JQuery object
下一篇: How can I disable a button in a jQuery dialog from a function?