Wypróbowałem wszystkie te rozwiązania i żadne nie działało całkowicie dla mnie. Oto, co wymyśliłem
$(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);
Pamiętaj, aby dodać klasę rozwijaną do każdego menu rozwijanego w html
Sztuczka polega na użyciu wyspecjalizowanej funkcji kliknięcia (znalazłem ją tutaj Zdarzenie Fire za każdym razem, gdy element DropDownList jest wybierany za pomocą jQuery ). Wiele innych rozwiązań tutaj korzysta ze zmiany obsługi zdarzeń, która działa dobrze, ale nie zostanie wyzwolona, jeśli użytkownik wybierze tę samą opcję, która została wcześniej wybrana.
Podobnie jak w przypadku wielu innych rozwiązań, fokus i wyciszenie kursora są używane, gdy użytkownik ustawia fokus na rozwijanym menu, a rozmycie - gdy kliknie.
Możesz również chcieć zastosować w tym celu jakiś rodzaj wykrywania przeglądarki, aby działał tylko np. Nie wygląda to jednak źle w innych przeglądarkach