Tentei todas essas soluções e nenhuma funcionou completamente para mim. Isso é o que eu inventei
$(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);
Certifique-se de adicionar uma classe suspensa para cada lista suspensa em seu html
O truque aqui é usar a função de clique especializada (eu a encontrei aqui Fire event cada vez que um item DropDownList é selecionado com jQuery ). Muitas das outras soluções aqui usam a alteração do manipulador de eventos, que funciona bem, mas não será acionada se o usuário selecionar a mesma opção selecionada anteriormente.
Como muitas das outras soluções, o foco e a redução do mouse são para quando o usuário coloca o menu suspenso em foco, o desfoque é para quando ele clica.
Você também pode querer colocar algum tipo de detecção de navegador nisso para que tenha efeitos apenas, ou seja. Mas não parece ruim em outros navegadores