2009-05-12 8 views
9

Je suis nouveau à jQuery et j'essaye d'écrire du code pour passer par la page et réécrire les liens d'ancre href attribut afin que les espaces sont supprimés et remplacés par% 20 .jQuery/Javascript remplacer <space> dans le lien d'ancrage avec% 20

jusqu'à présent j'ai:

$(".row a").each(function(){ 
    $(this).attr("href").replace(/\s/g,"%20"); 
}); 

J'ai essayé quelques variations de cela avec pas de chance.

Répondre

17

Votre approche est correcte, mais vous oubliez de définir la nouvelle valeur une fois que vous l'avez remplacée. Essayez ceci:

$(".row a").each(function() { 
    this.href = this.href.replace(/\s/g,"%20"); 
}); 
+1

Juste une note puisque je me battais la tête en essayant de comprendre cela. J'utilise le module complémentaire HTML Validator pour Firefox et il faisait toujours état des espaces dans les références URI. C'est parce que le validateur analyse la page séparément, * sans * JavaScript. – Travis

3

Vous devez définir la valeur d'attribut (attr(key, value)), dans votre code que vous lisez que sa valeur:

$(".row a").each(function(){ 
    $(this).attr('href', $(this).attr("href").replace(/\s/g,"%20")); 
}); 
20

Vous seriez mieux d'utiliser le javascript natif encodeURI fonction .

$(".row a").each(function(){ 
    $(this).attr('href', encodeURI($(this).attr("href"))); 
}); 
+0

Des trucs géniaux. Je n'avais pas rencontré 'encodeURI' avant. M'a sauvé des tas de temps. –

0

Vous pouvez remplacer "" comme ceci:

$(document).ready(function() { 
    $("#content a").each(function(){ 
     $(this).attr('href', $(this).attr("href").replace("%20","")); 
    }); 
}); 
1

@Naresh Oui, il y a un moyen pour cela, voir l'exemple ci-dessous:

Decode un URI après l'encodant:


<script type="text/javascript"> 

var uri="my test.asp?name=ståle&car=saab"; 
document.write(encodeURI(uri)+ "<br />"); 
document.write(decodeURI(uri)); 

</script> 

La sortie du code ci-dessus sera:


my%20test.asp?name=st%C3%A5le&car=saab 
my test.asp?name=ståle&car=saab 

pour plus de détails, visitez here

0

Je sais que c'est super fin, mais je trouve que la méthode unescape() a tendance à fonctionner aussi ...

Questions connexes