jQuery

2009-12-18 10 views
6

लोड करने के लिए सभी चुनिंदा विकल्पों के लिए jQuery प्रतीक्षा करें मेरे पास एक चयनित बॉक्स ऑब्जेक्ट है और एक अजाक्स फ़ंक्शन को इनपुट के रूप में चयनित मान का उपयोग करके OnChange कहा जाता है। जब भी चयन बॉक्स पहली बार लोड होता है तो मैं वही फ़ंक्शन कॉल करना चाहता हूं। मैं jQuery .load का उपयोग करता हूं, लेकिन किसी भी विकल्प को लोड करने से पहले AJAX फ़ंक्शन को कॉल किया जाता है और मेरे AJAX फ़ंक्शन में इनपुट अपरिभाषित होता है। क्या कोई जानता है कि फ़ंक्शन को कॉल करने से पहले सभी विकल्पों को लोड करने के लिए jQuery को कैसे प्राप्त किया जाए?jQuery

धन्यवाद।

संपादित करें - जोड़ना कोड मैं ने पाया है कि एक setTimeout() काम करता है बहुत अच्छी तरह से समारोह में देरी करने के। हालांकि, मैं setTimeout() का उपयोग करके घबरा जाता हूं क्योंकि यदि पृष्ठ सामान्य से धीमा हो जाता है, तो यह काम नहीं करेगा। मैंने सुझाव दिया है कि आपने $(document).ready के साथ टाइमआउट को प्रतिस्थापित करने का प्रयास किया था, लेकिन एक विकल्प चुना जाने से पहले फ़ंक्शन अभी भी कॉल किया गया था और इनपुट अपरिभाषित था।

<script type="text/JavaScript">  
    setTimeout('AjaxFunction($("#SelectID option:selected").val()));', 400); 
</script> 

<select id="SelectID" name="SelectName" onchange="AjaxFunction(this.value);"> 
<option value='Inland Empire'>Inland Empire</option> 
<option value='San Bernardino'>San Bernardino</option> 
<option value='Riverside'>Riverside</option> 
<option value='California'>California</option> 
</select> 
+0

ब्रायन, आपको चुनिंदा विकल्प कैसे लोड किए जाते हैं, इस बारे में अधिक जानकारी प्रदान करनी चाहिए। नीचे दी गई आपकी टिप्पणियों में से एक से व्युत्पन्न, यह AJAX के माध्यम से बनाया गया है। –

+0

'

9

क्या आप अब तक है कि कुछ कोड दिखा सकते हैं:

यहाँ कोड है? JQuery के तैयार() फ़ंक्शन का उपयोग करके आप जो चाहते हैं उसे पूरा करना चाहिए। यह मूल रूप से पूरे डीओएम को निष्पादित करने से पहले लोड करने की प्रतीक्षा करता है।

$(document).ready(function(){ 
    //code here runs after the DOM is created 
}); 
+1

मुझे विश्वास नहीं है कि यह ओपी के लिए काम करता है - वे '

3

यदि आप पहली बार के लिए सलेक्ट बॉक्स पहले टिम की सामग्री को लोड करने के लिए jquery.load का उपयोग ई तो आप अपने ajaxFunction जोड़ने के लिए लोड समारोह के कॉलबैक पैरामीटर का उपयोग करना चाहिए ..

तो ..

जहाँ भी/जब भी आप लोड फ़ंक्शन को कॉल इस

$("some_selector_where_you_load_the_select_box") 
.load("somepage.htm", 
     function(){ AjaxFunction($("#SelectID option:selected").val()); } 
    ); 
भी बजाय

तरह यह करना अजाक्स फ़ंक्शन को स्वयं कॉल करने के लिए आप केवल परिवर्तन ईवेंट को ट्रिगर कर सकते हैं और चुनिंदा बॉक्स को अपने आप पर अजाक्सफंक्शन को संभालने दें .. (उपयोगी यदि आप इसे एकाधिक चयन बॉक्स के साथ करते हैं)

जो

होगा
$("some_selector_where_you_load_the_select_box") 
.load("somepage.htm", 
     function(){ $("#SelectID").change(); } 
    ); 
+1

परिवर्तन के लिए +1() और लोड() के साथ कॉलबैक का उपयोग करने के लिए। मान लें कि यह सही समाधान है क्योंकि चयन विकल्प AJAX के साथ लोड किए जा रहे हैं। –

1

सबसे अच्छा तरीका यह है, परिवर्तन ट्रिगर पर की स्थापना में देरी करने के लिए है चयन और गतिशील रूप से बताएं कि परिवर्तन पर क्या करना है। जैसे ही आप केवल परिवर्तन() फ़ंक्शन का उपयोग करते हैं, इसे आग लगने के लिए।तो यहां यह दिखाई देगा:

$(document).ready(function(){ 

    //At this point the select should be fully built, dynamically add the on change handler. 

    $('#SelectID').change(AjaxFunction); 

    //Fire the change event immediately. 

    $('#SelectID').change(); 
});