cztery opcje dla Ciebie:
opcja 0
Go czytać Sean Hogan's answer, zwrócił uwagę, że można to zrobić z delegacji i ułożyła przykład (doh!) realizacja.
Wariant 1
Można dokonać href
powiązań „#” aż jQuery jest załadowany, a następnie (jeśli dotyczy), aby zmienić to, co naprawdę powinno być. Można przechowywać co href
powinny być atrybutem data-
, np .:
<a href='javascript:;' data-href='realtarget.html'>blah</a>
Następnie:
jQuery(function($) {
$("a[data-href]").each(function() {
var $this = $(this);
$this.attr("href", $this.attr("data-href"));
});
});
Ponownie, że ostatni kawałek tylko jeśli naprawdę potrzebujesz, aby href href. Jeśli obsługujesz klikanie za pomocą JavaScript, nie musisz.
Jeśli walidacja jest istotną częścią cyklu rozwojowego, należy pamiętać, że atrybuty w postaci data-xyz
są nieprawidłowe w HTML4 i wcześniej (przeglądarki faktycznie nie obchodzi, ale ponownie, jeśli używasz sprawdzania poprawności ...) . Stają się one ważne od HTML5.
Wariant 2
Użyj inline onclick
atrybuty przechwycić kliknij jQuery przed załadunkiem i po prostu powiedzieć: "Niestety, jeden moment". Więc w script
tag w górnym z pliku:
function sorryLoading() {
alert("Sorry, the page is still loading, one moment please.");
return false;
}
... a potem na linki:
<a href='realtarget.html' class='sorry' onclick='return sorryLoading();'>blah</a>
... następnie wyjąć onclick
obciążenia jQuery:
jQuery(function($) {
$("a.sorry").removeClass('sorry').attr("onclick", "").click(yourRealClickHandler);
});
(Możesz zostawić ostatni bit — z click
zadzwoń pod numer — off jeśli nie wszystkie mają taką samą kliknij obsługi.)
Użyłem klasę wyżej odróżnić tych linków i innych, które mogłyby mieć inline onclick
(inaczej zaskakująco selektor „a [onclick ] "faktycznie działa w przeglądarce Chrome, Opera i Firefox dla systemu Linux oraz IE6 i IE8 w systemie Windows).
Wariant 3
Ponieważ brzmi to jak chcesz, aby strona się niefunkcjonalne aż jQuery ładunku, tu jest inne podejście:
- Upewnij się, że tag skrypt jQuery jest w
head
sekcja twojej strony (nie na dole, gdzie normalnie polecałbym ją wstawić).
- Na samym dole strony, tuż przed zamknięciem znacznika
body
, podłącz komunikatory bez konieczności zawijania ich, zawijając je w wywołanie jQuery.ready
(lub dowolnym z jego skrótów).
Powód jest następujący: 1 zapewnia, że sam jQuery załadowano przed stronie, która jest wygenerowana i # 2 będzie podłączyć do obsługi jak najszybciej. Google zaleca używanie tagu na końcu strony (zamiast funkcji ready
lub podobnej) i mówi, że w tym momencie elementy DOM będą gotowe do odkrycia.
Oddzielnie, oczywiście, chcesz mieć pewność, że czas, w którym linki nie rób tego, co oczekuje użytkownik absolutnie jak najkrótszy wykonując wszystkie rzeczy strona optymalizacji obciążenia ty mogą. Kliknięcie linku i jego brak powoduje, że wygląda na słabszy.
Można spróbować podejścia UI. może utworzyć preloader. – sheeks06
Zaktualizowałem odpowiedź Seana Hogana na przykładzie. Ma absolutną rację, jak to zrobić. –