Cuatro opciones para usted:
opción 0
ir a leer Sean Hogan's answer, que señalaron que esto se puede hacer con la delegación y yo juntos un ejemplo (DOH!) implementación.
Opción 1
Puede hacer que el href
de los enlaces "#" hasta que se carga jQuery, y luego (en su caso) el cambio a lo que realmente debe ser. Puede almacenar lo que el href
debe estar en un atributo data-
, por ejemplo .:
<a href='javascript:;' data-href='realtarget.html'>blah</a>
continuación:
jQuery(function($) {
$("a[data-href]").each(function() {
var $this = $(this);
$this.attr("href", $this.attr("data-href"));
});
});
vez más, que el último bit sólo si realmente necesita para tomar la href href una. Si está manejando el clic a través de JavaScript, no es necesario.
Si la validación es una parte importante de su ciclo de desarrollo, es importante tener en cuenta que los atributos en el formulario data-xyz
no son válidos en HTML4 y anteriores (los navegadores no se preocupan, pero si usa la validación ...) . Se vuelven válidos a partir de HTML5.
Opción 2
uso en línea onclick
atributos para interceptar el clic antes de la carga y jQuery básicamente decir "Lo siento, un momento". Así, en una etiqueta script
en la parte superior de su archivo:
function sorryLoading() {
alert("Sorry, the page is still loading, one moment please.");
return false;
}
... y luego en los enlaces:
<a href='realtarget.html' class='sorry' onclick='return sorryLoading();'>blah</a>
... luego retire la onclick
en la carga jQuery:
jQuery(function($) {
$("a.sorry").removeClass('sorry').attr("onclick", "").click(yourRealClickHandler);
});
(puede dejar el último bit — la llamada click
— fuera si no lo hacen todos tienen el mismo controlador de clic.)
he utilizado una clase por encima de diferenciar entre estos circuitos y otros que podrían tener un inline onclick
(de lo contrario, es sorprendente que el selector de "un [onclick ] "realmente funciona en Chrome, Opera y Firefox para Linux e IE6 e IE8 en Windows).
Opción 3
Desde que suena como desea que la página sea no funcional hasta cargas de jQuery, aquí hay otro enfoque:
- Asegúrese de que la etiqueta script de jQuery es en el
head
sección de su página (no en la parte inferior, donde normalmente recomendaría ponerlo).
- En la parte inferior de la página, justo antes de cerrar la etiqueta
body
, conectar sus manipuladores clic sin envolviéndolos en una llamada jQuery.ready
(o cualquiera de sus accesos directos).
La razón es la siguiente: # 1 se asegurará de que sí jQuery se carga antes de la página que se está dictada, y # 2 será conectar los controladores tan pronto como sea posible. Google recomienda usar una etiqueta al final de la página de esa manera (en lugar de una función ready
o similar) y dice que en ese punto, los elementos DOM estarán listos para ser descubiertos.
Por otro lado, por supuesto, usted quiere asegurarse de que el tiempo durante el cual los enlaces no hacen lo que el usuario espera es absolutamente lo más breve posible haciendo todas las cosas optimización de carga de páginas que poder. Hacer clic en un enlace y no hacer que funcione como lo hace hace que la experiencia del usuario sea baja.
Puede probar un enfoque de interfaz de usuario. tal vez crear un preloader. – sheeks06
He actualizado la respuesta de Sean Hogan con un ejemplo. Él tiene toda la razón sobre cómo hacer esto. –