2012-01-09 5 views
0

J'ai donc un lien comme celui-ci:revise attribut href

<a href="http://thissite.org/thisfolder/21/thispage.php"> 

Ce que je veux faire est de le réviser, mais garder une partie de celui-ci par exemple:

<a href="http://thissite.org/thatfolder/21/thatpage.php"> 

peut-il être fait avec Jquery ou js?

Je sais que je peux remplacer la propriété href par jquery mais je dois laisser une partie de l'URL ("21") et juste changer le texte avant et après. Je pensais peut-être attraper la propriété href, la coller dans une variable et la démonter et la remettre ensemble d'une façon ou d'une autre.

Toute aide avec ceci serait grandement appréciée.

Répondre

3

Vous pouvez appeler replace dans une fonction setter de propriété:

$('a').attr('href', function(index, old) { 
    return old.replace(/thisfolder/i, 'thatfolder'); 
}); 
+0

Bonne réponse. Je stockais toujours la valeur d'attribut d'origine dans une variable, puis la définissais comme $ ('a'). Attr ('href', oldHref.replace (...); '. Je ne savais pas que vous pouviez passer un fonctionne en tant que second argument – maxedison

+0

@maxedison: Oui, c'est une fonctionnalité très utile Notez que votre chemin ne fonctionnera pas s'il y a plusieurs éléments à moins que vous n'ayez appelé '.each' – SLaks

+0

Bien, je ferais soit ou utilisez un sélecteur plus spécifique, mais cela rend votre solution d'autant plus élégante que je suppose que cela peut se faire à peu près n'importe où, non? Comme dans '.css()', etc? – maxedison

1

Une façon grossière de le faire serait:

// "elem" is the element, for example elem=document.getElementById('link_to_change') 
var url = elem.getAttribute("href").split("/"); 
url.pop(); 
url.push("thatpage.php"); 
elem.setAttribute("href",url.join("/")); 
+0

... et la partie "thatfolder" – Stefan

+0

Ah oui. Eh bien, je suppose que vous pouvez "pop()" tous ceux dont vous avez besoin, puis les "repousser", mais cela commence à devenir désordonné. –

Questions connexes