Pracuję na stronie internetowej, w której kliknięcie określonego linku spowoduje zsunięcie panelu logowania. Używam event.preventDefault()
, aby powstrzymać witrynę przed przekierowaniem, jak również zdarzenia animacji, aby przesunąć panel w dół. Po kliknięciu łącza panel przesuwa się w dół, a adres URL pozostaje niezmieniony.Użyj JQuery preventDefault(), ale nadal dodawaj ścieżkę do adresu URL
To, co chcę zrobić po kliknięciu łącza, to normalne animowanie panelu, ale atrybut href linku do wyświetlenia w adresie URL. W takim przypadku będzie to coś takiego: http://domain_name/#login
.
Oto kod mam zamiar teraz:
$("#login_link").click(function (e) {
e.preventDefault();
$("#login").animate({ 'margin-top': 0 }, 600, 'linear');
window.location.hash = $(this).attr('href');
});
Ten kod skutecznie dodaje „#login” do adresu URL jako pożądany, ale pomija animację panelu logowania. Po kliknięciu linku panel pojawia się natychmiast. Chciałbym zachować zarówno animację, jak i zaktualizowane zachowania URL-i. czy to możliwe?
To może być głupie pytanie, ale czy na pewno animacja jquery działa, gdy skomentowano linię kodu window.location.hash? –
Czy możesz zaakceptować odpowiedzi na zadane pytania? Jestem pewien, że przynajmniej kilku z nich ma przyzwoite odpowiedzi ... ludzie na ogół lubią uznanie za swoją pracę. – tjameson
co się stanie, gdy po prostu pominiesz linię 'e.preventDefault()'? –