2013-03-21 12 views
10

Ich habe ein Auswahlmenü, das eine AJAX-Anfrage auslöst, sobald eine der Optionen angeklickt wurde. Ich muss ein Click-Ereignis für die relevante Option über einen Link auslösen. So habe ich Code ähnlich die unten, und obwohl sie den Wert der Auswahl ändern, ist es nicht simuliert einen Klick:jQuery Click-Ereignis simulieren bei Auswahl der Option

$('#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> 

Jede Hilfe wäre sehr geschätzt. nicht das Click-Ereignis dieses Elements auslösen

Antwort

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

lediglich den Wert eines <select> Einstellung; es muss direkt angerufen werden.

+0

Danke für die Antwort. Das macht Sinn, aber ich habe Ihr Beispiel oben implementiert und es löst immer noch keinen AJAX-Aufruf aus, wenn eine Option ausgewählt wurde. Irgendwelche Ideen? –

+0

Ich bin nicht psychisch, Sie müssen Ihren Code veröffentlichen, der Ihre Ajax-Funktion aufruft. –

+5

Statt ein Klickereignis auszulösen, lösen Sie ein Änderungsereignis aus. –

-3

Es ist Teil des WooCommerce-Kerns, also kann ich nicht alles posten. Aber hier ist ein Ausschnitt, obwohl ich nicht sicher bin, ob es Ihnen viel erzählen ...

.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

Auslösen eines Click-Ereignis auf die Option wird nicht funktionieren. Hier ist ein Ausschnitt, das tut:

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

Ich habe Setup eine Geige here das gleiche zeigt. Dies sollte funktionieren.

Anstatt einen Klick zu verwenden, können Sie das Änderungsereignis auslösen und denselben Effekt erzielen.

+0

IMO deine Antwort ist besser, da viele eine onchange Funktion haben :) –

Verwandte Themen