2009-05-22 18 views
106

प्राप्त करना निम्न कोड में मैंने चयन के मूल्य के आधार पर कुछ अनुवर्ती प्रश्नों को दिखाने और छिपाने के लिए एक चयन बॉक्स पर एक परिवर्तन हैंडलर सेट अप किया है।एक खाली JQuery ऑब्जेक्ट

आगे, चयन के कुछ मूल्यों के लिए एक अतिरिक्त संदेश प्रदर्शित होता है।

यह देखने के लिए कि मुझे अतिरिक्त संदेश छिपाने की आवश्यकता है या नहीं, मैं पिछला नामक एक चर रखता हूं। हैंडलर के निष्पादन पर मैं यह देखने के लिए जांच करता हूं कि पिछला शून्य है या यदि आकार 0 है।

एक खाली JQuery ऑब्जेक्ट से पहले प्रारंभ करना अच्छा होगा ताकि नल के लिए अतिरिक्त जांच न करें।

एक $ (कर) के 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; } }; 

लेकिन यह है कि overkill की तरह लगता है।

उत्तर

197

यह एक खाली jQuery-वस्तु बनाता है:

$([]) 

अद्यतन: jQuery (1.4 +) के नए संस्करण में, आप उपयोग कर सकते हैं:

$() 
+6

+1 सुंदर जवाब है, मुझे लगता है कि के बारे में सोचा है कभी नहीं होगा :) –

+0

मैं नहीं दिख रहा है कि यह कैसे '$ से अलग है()'। क्या कोई प्रकाश डाल सकता है? – cregox

+3

jQuery 1.4 के रूप में, यह नहीं है। उस से पहले सवाल पूछा गया था। – Magnar

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(); 
     } 
    }); 
    }); 
}); 
19
$(); 

एक खाली सेट

jQuery 1.4 के रूप में लौटने के बाद कोई तर्क के साथ jQuery() विधि बुला देता है एक खाली jQuery सेट (0 से .length संपत्ति के साथ)। JQuery के पिछले संस्करणों में, यह दस्तावेज़ नोड युक्त एक सेट लौटाएगा।

स्रोत: api.jquery.com

+5

लिंक (http://api.jquery.com/jQuery/#jQuery1) अपने बयान अप शायद आप और अधिक अप प्राप्त होगा :) वापस करने के लिए प्रदान करना। – studgeek

संबंधित मुद्दे