Ответ 1
Ну, вы не можете прикрепить событие click
к html select
но вы можете сделать эту сложную вещь...
Взгляните сюда:
Live DEMO:
Я использую этот код для симуляции click
на select
:
$(function(){
$("#click").click(function(){
$("#ts").click();
//$("#ts").trigger("click");
});
});
и код HTML:
<select id="ts">
<option value="1">1</option>
<option value="2">Lorem ipsum dolor s.</option>
<option value="3">3</option>
</select>
<input type="button" id="click" value="Click"/>
Я тестирую click
и trigger
, но оба они не работают.
Спасибо за любую помощь.
Ну, вы не можете прикрепить событие click
к html select
но вы можете сделать эту сложную вещь...
Взгляните сюда:
Live DEMO:
Это лучший метод перекрестного браузера, который, я думаю, вы можете получить. Протестировано в Safari, Firefox, Chrome и IE. Для Chrome, ответ Оскара Хары - это путь. (обновление: 10-13-2016)
$(function() {
$("#click").on('click', function() {
var $target = $("#ts");
var $clone = $target.clone().removeAttr('id');
$clone.val($target.val()).css({
overflow: "auto",
position: 'absolute',
'z-index': 999,
left: $target.offset().left,
top: $target.offset().top + $target.outerHeight(),
width: $target.outerWidth()
}).attr('size', $clone.find('option').length > 10 ? 10 : $clone.find('option').length).change(function() {
$target.val($clone.val());
}).on('click blur keypress',function(e) {
if(e.type !== "keypress" || e.which === 13)
$(this).remove();
});
$('body').append($clone);
$clone.focus();
});
});
Смотрите jsFiddle demo
Это так близко, как вы думаете:
$(function(){
$("#click").on('click', function(){
var s = $("#ts").attr('size')==1?5:1
$("#ts").attr('size', s);
});
$("#ts option").on({
click: function() {
$("#ts").attr('size', 1);
},
mouseenter: function() {
$(this).css({background: '#498BFC', color: '#fff'});
},
mouseleave: function() {
$(this).css({background: '#fff', color: '#000'});
}
});
});
Я закончил настройку выбранного атрибута на самой опции. Затем запуск изменения даже на элементе select.
У меня есть сложный элемент select
, заданный ответом, заданным в предыдущем элементе select
. Опции подаются AJAX, вызванные событиями onchange
.
Для моих нужд, чтобы заполнить ответы с помощью "скрытого волшебного события", который имитирует поведение пользователя (в интенсивном режиме тестирования), я использую следующий код jQuery в "моем волшебном событии". Он выбирает опцию по индексу:
// Quick feed of my Car Form
document.getElementById('carbrand').selectedIndex = 30; // "PORSCHE"
document.getElementById('carbrand').onchange();
var timeoutID = window.setTimeout(function () {
document.getElementById('model').selectedIndex = 1; // "911"
document.getElementById('model').onchange();
var timeoutID = window.setTimeout(function () {
document.getElementById('energy').selectedIndex = 1; // "SUPER"
document.getElementById('energy').onchange();
} , 200);
} , 200);
Merci à https://stackoverflow.com/users/1324/paul-roub pour les correctments; -)
небольшое обновление (с toggle
) для варианта Оскара Хары
http://jsfiddle.net/mike_s/y5GhB/