2012-07-07 3 views
4

J'utilise ce plugin http://www.asual.com/jquery/address/ pour détecter les changements de hachage et tel pour mon site web, il l'utilise uniquement pour sa navigation, c'est donc une partie essentielle de l'expérience des utilisateurs. Maintenant, cela fonctionne parfaitement pour tout ce que je fais avec, sauf qu'il ne déclenche pas l'événement si le hachage ne change pas/n'est pas différent de la dernière URL de hash qui a été cliquée, par exemple si je suis par exemple. com/home et cliquez à nouveau sur l'icône de la page d'accueil pour ne pas recharger la page, comme si vous n'utilisiez que des liens réguliers. Je n'ai pas été capable de comprendre comment réaliser ceci pour tous les liens qui font partie de l'URL. (Pas seulement tous les tags parce que j'utiliser des balises sans qu'il soit une partie de navigation. Ainsi, toute aide serait génial, merci.jQuery adresse hash changement de trigger même si hash ne change pas

$.address.change(function(event){ 
///events to be triggered on hash change 
}); 

Répondre

5

L'événement onhashchange porte bien son nom, il ne se déclenche que lorsque la réserve de modifications de hachage.

.

la seule solution que je suis au courant de ce problème serait de lier la même fonction à l'événement click icône page d'accueil

, jQuery fournit également son propre événement pour le changement de hachage:

$(window).on("onhashchange", function (e) { 
    route(); 
}) 
$(".icon").on("click", function(e) { 
    location.hash == "#/" ? route(): null; 
}) 

En outre, si ceux-ci sont un balises, disons, dans un #nav div:

$("#nav").delegate("a", "click", function() { 
    location.hash == this.href ? route() : null; 
}) 

Ou cela peut simplement être appliquée à tous les tags: un

$("a").on("click", function() { 
    location.hash == this.href ? route() : null; 
})