2010-11-25 35 views
3

Je dois retirer le # de l'url quand mon event.value est == to /. J'ai un lighbox avec jquery.address qui stocke des références à des images ouvertes, quand je le ferme j'ai besoin d'enlever le # mark parce que cette fenêtre de défilement fait défiler vers le haut.JQuery.address comment supprimer # de l'url (javascript window.location remove #)

J'ai réussi à enlever la marque # avec ceci: window.location.href.slice (0, -1); mais comme vous pouvez le voir dans le code ci-dessus, l'url réécrit lorsque la page est chargée et pas seulement après mon événement.

Comment puis-je enchaîner ce javascript uniquement lorsque mon complet se produit, de la façon dont cette fonction est appelée olny quand je ferme la lightbox.

Je joins ici mon code avec des commentaires. vous remercie tous

$.address.change(function(event) { 
    curLink = event.value; 
    if(curLink != '/') { 

    // here my stuff, jquery.address generates url with reference 

    // ex: mysite.com/cat/subcat/page.html#one 

    } else { 

     $('#element').animate({opacity:"0"},{duration:100, easing:"quartEaseOut", complete: function() { 

     // here I need to remove the hash only after the complete 

     // ex: mysite.com/cat/subcat/page.html# > mysite.com/cat/subcat/page.html 

     window.location.href.slice(0, -1);   
     $(this).hide(); 
    }}); 
    } 
}); 

Répondre

2

L'utilisation window.location.hash = '' doit retirer purement et simplement, sinon il y a quelques bons plugins qui ouvrent beaucoup de fonctions pour travailler avec des URL (par exemple http://ajaxcssblog.com/jquery/url-read-request-variables).

+1

cette était la solution la plus simple. Je vous remercie. – Luke

0

window.location.hash = '' ne fonctionnent pas dans mon cas.

window.location.href.slice(0, -1); fonctionne! le problème que je ne peux pas résoudre est comment je peux enchaîner cette instruction JavaScript seulement après l'événement jQuery complet (maintenant il est déclenché au chargement de la page).

Je pense que maintenant est appel JavaScript stupide après jQuery

merci

2

essayer

newHash = window.location.hash.substring(1); 

console.log(newHash); 

si vous avez un point d'ancrage alors son habituellement joint au début de l'URL ainsi, mais En supprimant le premier personnage, vous ne devriez plus avoir de problème.

ou si vous pouvez même le faire de cette façon que je pense est ce que vous pourriez avoir besoin

newHash = window.location.hash.replace('#', ''); 

console.log(newHash); 
+0

c'était un commentaire utile, merci – radleybobins

1

que j'ai trouvé que la modification de la valeur après le hachage qui fonctionne le mieux pour un scénario semblable à la vôtre. Il faudrait que ce soit un hash qui n'existe pas déjà sur votre page.

function removeDeepLink(event) { 
    window.location.hash = 'foo'; 
}; 
1

Vous pouvez également utiliser ce (qui supprime totalement le hachage et nettoie l'URL de retour en haut)

history.pushState("", document.title, window.location.pathname); 

Ce qui change

http://www.google.com/#top 

à

http://www.google.com/