Probé todas estas soluciones y ninguna funcionó completamente para mí. Esto es lo que se me ocurrió
$(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);
Asegúrese de agregar una clase desplegable a cada menú desplegable en su html
El truco aquí es usar la función de clic especializada (lo encontré aquí Fire event cada vez que se selecciona un elemento DropDownList con jQuery ). Muchas de las otras soluciones aquí utilizan el cambio de controlador de eventos, que funciona bien pero no se activará si el usuario selecciona la misma opción que se seleccionó anteriormente.
Al igual que muchas de las otras soluciones, el enfoque y el mousedown es para cuando el usuario enfoca el menú desplegable, el desenfoque es para cuando hace clic.
Es posible que también desee incluir algún tipo de detección del navegador en esto para que solo afecte, es decir. Aunque no se ve mal en otros navegadores