JQuery имитирует событие click при выборе опции
У меня есть меню выбора, которое запускает запрос AJAX, когда один из параметров был нажат. Мне нужно вызвать событие click по соответствующему параметру из ссылки. Поэтому у меня есть код, похожий на приведенный ниже, и хотя он изменяет значение select, он не имитирует клик:
$('#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>
Любая помощь будет принята с благодарностью.
Ответы
Ответ 1
Запуск события клика по опции не будет работать. Вот фрагмент, который делает:
$('#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;
});
У меня есть скрипт здесь, показывающий то же самое.
Это должно работать.
Вместо использования щелчка вы можете инициировать событие изменения и добиться того же эффекта.
Ответ 2
$('#click').click(function(){
var value = $(this).attr("rel");
$('#select')
.val(value)
.trigger('click');
return false;
});
Простое значение a <select>
не вызывает событие щелчка этого элемента; он должен быть вызван напрямую.
Ответ 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();
}
} )