2010-11-29 15 views

Répondre

4

Si vous disons que vous voulez seulement ajouter # aux liens qui sont aux pages dans le même domaine, yo u peut comparer la hostname de window.location à celle du lien:

$("a").attr("href", function(i, href) { 
    if(window.location.hostname === this.hostname) { 
     return href + "#"; 
    } 
}); 
3

Vous pouvez passer une fonction à .attr() comme ceci:

$("a").attr("href", function(i, href) { return href + "#"; }); 

Bien ... Je suis Vous n'êtes pas sûr de votre raisonnement, voulez-vous faire défiler vers le haut de la page actuelle? Dans ce cas, vous pouvez utiliser .scrollTop() avec un compositeur, comme celui-ci:

$("a").click(function() { $("html, body").scrollTop(0); }); 

Ou .animate() il:

$("a").click(function() { $("html, body").animate({scrollTop: 0 }, 500); }); 
+0

Bon sang qui est lisse. –

+0

Je peux me tromper, mais par "liens internes" je pense que OP signifiait des liens vers des pages dans le même domaine. – user113716

+1

@patrick - Peut-être ... maintenant que vous dites que c'est très flou –

0
$("a").each(function() { 
    $this = $(this); 
    $this.attr("href", $this.attr("href") + "#"); 
}); 
-2

Peut-être que vous pourriez essayer ceci:

$(document).ready(function() { 
    var attr = $('a').attr('href'); 
    attr = attr + '#'; 
    $('a').attr('href', attr); 
}); 
+0

-1 En supposant que tous les hrefs sont identiques. – Tomas

+0

Ce script va causer de la douleur ... la valeur de "attr" serait très imprévisible et vous devez définir chaque balise d'ancrage sur la page pour le même lien - ce qui ne peut pas être juste. – Fenton