2013-03-21 29 views
10

Seçeneklerden biri tıklandığında bir AJAX isteğini tetikleyen bir seçme menüm var. Bir bağlantıdan ilgili seçenekte bir tıklama etkinliği tetiklemem gerekiyor. Bu yüzden aşağıda benzer bir kod var, ve seçme değerini değiştirir rağmen, bir tıklama simüle değildir: Herhangi bir yardım büyük takdirjQuery select seçeneğinde olayı simulate olayı simülasyonu

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

.

cevap

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

Sırf o elemanın tıklama olayı tetiklemez bir <select> değerini ayarlama; doğrudan çağrılmalıdır.

+0

Yanıt için teşekkürler. Bu mantıklı, ancak yukarıdaki örneğini uyguladım ve hala bir seçenek seçildiğinde yapılan AJAX çağrısını tetiklemiyor. Herhangi bir fikir? –

+0

Ben psişik değilim, ajax işlevini çağıran kodunuzu göndermelisiniz. –

+5

Bir tıklama etkinliğini tetiklemek yerine, bir değişiklik olayı tetikleyin. –

-3

Bu WooCommerce çekirdeğinin bir parçası, bu yüzden hepsini gönderemiyorum. Ben çok söyleyecektir eğer çok emin değilim rağmen Ama burada işe yaramaz seçeneği bir tıklama olayı Tetikleme ...

.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

snippet'idir.

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

Ben kurulum keman here aynı gösteren sahiptir: Burada yaptığı snippet'idir. Bu işe yaramalı.

Bir tıklama kullanmak yerine değişiklik olayını tetikleyebilir ve aynı efekti elde edebilirsiniz.

+0

IMO ile ilgili yardımlarınız için şimdiden teşekkür ederiz. –