Я спробував усі ці рішення, і жодне не працювало повністю для мене. Це те, що я придумав
$(document).ready(function () {
var clicknum = 0;
$('.dropdown').click(
function() {
clicknum++;
if (clicknum == 2) {
clicknum = 0;
$(this).css('position', '');
$(this).css('width', '');
}
}).blur(
function() {
$(this).css('position', '');
$(this).css('width', '');
clicknum = 0;
}).focus(
function() {
$(this).css('position', 'relative');
$(this).css('width', 'auto');
}).mousedown(
function() {
$(this).css('position', 'relative');
$(this).css('width', 'auto');
});
})(jQuery);
Не забудьте додати випадаючий клас до кожного випадаючого списку у вашому html
Хитрість тут полягає у використанні спеціалізованої функції натискання (я знайшов її тут Пожежна подія кожного разу, коли за допомогою jQuery вибирається елемент DropDownList ). Багато інших рішень тут використовують зміну обробника подій, яка працює добре, але не спрацьовує, якщо користувач вибирає ту саму опцію, яку було вибрано раніше.
Як і багато інших рішень, фокус і миша - це для того, коли користувач ставить спадне меню у фокусі, розмиття - для того, коли вони клацають.
Можливо, ви також захочете застосувати в цьому якийсь спосіб виявлення браузера, щоб він лише впливав, тобто. Однак це не виглядає погано в інших браузерах