Я обновил JSFiddle Sime Vidas, чтобы включить мое решение:
http://jsfiddle.net/TnzS4/221/
Вот в двух словах:
$wrap = $('.wrap');
$dropdown = $('.dropdown');
$dropdown.focus(function() {
$wrap.addClass('hover');
$dropdown.one('change', function() {
$wrap.removeClass('hover');
$dropdown.blur();
});
});
$dropdown.blur(function() {
$wrap.removeClass('hover');
});
Я добавляю класс «зависания», когда пользователь фокусируется на раскрывающемся списке, и удаляю класс «зависания», когда пользователь выбирает параметр или теряет фокус на раскрывающемся списке.
Класс .hover имитирует CSS псевдокласса: hover.
Событие 'focus' срабатывает только один раз, когда вы щелкаете по раскрывающемуся меню, пока оно снова не станет размытым. Решение состоит в том, чтобы размыть () выпадающий список после выбора параметра, что позволяет исправлению работать несколько раз.
В моем конкретном случае мне пришлось поместить $ wrap.removeClass ('hover') в setTimeout, как показано ниже. Это зависит от вашего сценария, поэтому я оставил его вне JSFiddle:
setTimeout(function() {
$wrap.removeClass('hover');
}, 1000);