2013-03-21 9 views
10

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

$('#click').click(function(){ 
    var value = $(this).attr("rel"); 
    $('#select').val(value); 
    return false; 
}); 

<select id="select" name="select"> 
    <option>Select...</option> 
    <option value="1">Option 1</option> 
    <option value="2">Option 2</option> 
</select> 

<a href="#" rel="1" id="click">Click for option 1</a> 

किसी भी मदद की बहुत सराहना की जाएगी।

उत्तर

3
$('#click').click(function(){ 
    var value = $(this).attr("rel"); 
    $('#select') 
     .val(value) 
     .trigger('click'); 
    return false; 
}); 

केवल एक <select> का मान सेट उस तत्व की क्लिक करें घटना को गति प्रदान नहीं करता है; इसे सीधे कहा जाना चाहिए।

+0

प्रतिक्रिया के लिए धन्यवाद। यह समझ में आता है, लेकिन मैंने उपरोक्त अपना उदाहरण लागू किया है और यह अभी भी AJAX कॉल को ट्रिगर नहीं कर रहा है जिसे एक विकल्प चुना गया है। कोई विचार? –

+0

मैं मानसिक नहीं हूं, आपको अपना कोड पोस्ट करने की आवश्यकता है जो आपके AJAX फ़ंक्शन को कॉल करे। –

+5

एक क्लिक ईवेंट ट्रिगर करने के बजाय, एक परिवर्तन ईवेंट ट्रिगर करें। –

-3

यह WooCommerce कोर का हिस्सा है, इसलिए मैं इसे सब पोस्ट नहीं कर सकता। लेकिन यहाँ एक टुकड़ा है, हालांकि मैं भी यकीन है कि अगर यह आप ज्यादा बता देंगे नहीं कर रहा हूँ ...

.on('change', '.variations select', function(event) { 

    $variation_form = $(this).closest('form.variations_form'); 
    $variation_form.find('input[name=variation_id]').val('').change(); 

    $variation_form 
     .trigger('woocommerce_variation_select_change') 
     .trigger('check_variations', [ '', false ]); 

    $(this).blur(); 

    if($().uniform && $.isFunction($.uniform.update)) { 
     $.uniform.update(); 
    } 

}) 
9

विकल्प काम नहीं करेगा पर एक क्लिक घटना ट्रिगर।

$('#click').on('click', function(){ 
     var value = $(this).attr('rel'); //get the value 
     value++; //increment value for the nth-child selector to work 

     $('#select') 
      .find('option:nth-child(' + value + ')') 
      .prop('selected',true) 
      .trigger('change'); //trigger a change instead of click 

     return false; 
    }); 

मैं सेटअप एक बेला here ही दिखाए जा रहे हैं: यहाँ एक टुकड़ा है कि करता है। यह काम करना चाहिए।

एक क्लिक का उपयोग करने के बजाय आप परिवर्तन घटना को ट्रिगर कर सकते हैं और उसी प्रभाव को प्राप्त कर सकते हैं।

+0

आईएमओ आपका उत्तर बेहतर है क्योंकि कई चयनों में एक एक्सचेंज फ़ंक्शन है :) –

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