88 votes

Comment mettre à jour (ajouter) un href en jquery ?

J'ai une liste de liens qui vont tous vers une api google maps.

les liens ont déjà le daddr (destination) en tant que statique. J'utilise la géolocalisation pour trouver la position de l'utilisateur et je veux ajouter le paramètre de destination à la liste. saddr (adresse source) aux liens une fois que j'aurai les données.

donc, en gros, je devrai ajouter quelque chose comme &saddr=50.1234567,-50.03452 à la fin de tous les liens pointant vers google maps

Tous les liens ont une classe appelée directions-link

et de cette page J'ai trouvé comment les changer :

$("a.directions-link").attr("href", "http://www.google.com/");

Cependant, je veux seulement ajouter ma valeur à la fin du href sans changer ce que le href est déjà.

Comment puis-je faire ça ?

163voto

Gabe Points 24378
var _href = $("a.directions-link").attr("href");
$("a.directions-link").attr("href", _href + '&saddr=50.1234567,-50.03452');

Pour boucler avec each()

$("a.directions-link").each(function() {
   var $this = $(this);       
   var _href = $this.attr("href"); 
   $this.attr("href", _href + '&saddr=50.1234567,-50.03452');
});

0 votes

Merci, cela fonctionnera-t-il s'il y a plus d'un lien directionnel, tous avec des références différentes ? Je vous remercie.

0 votes

Si vous ajoutez la même chose pour chaque instance de a.directions-link alors oui. Dans le cas contraire, si vous ajoutez une valeur différente à chaque href, vous devrez utiliser une balise each() pour itérer et ajouter la valeur respective.

0 votes

J'ajoute la même valeur, mais chaque href est différent au départ. Ainsi, si le premier est one.html et le second two.html, ils finissent tous deux par être one.html&saddr... parce qu'il ne capture que le href du premier lien a.directions-link et l'utilise pour tous. Je pense donc que je dois utiliser each(). Pouvez-vous m'éclairer sur l'utilisation de cette méthode ? Merci !

49voto

zaius Points 2947

La version 1.4 de jQuery propose une nouvelle fonctionnalité pour faire cela, et elle est géniale. J'ai oublié comment ça s'appelle, mais vous l'utilisez comme ceci :

$("a.directions-link").attr("href", function(i, href) {
  return href + '?q=testing';
});

Cela boucle sur tous les éléments aussi, donc pas besoin de $.each

4 votes

Ça n'a pas marché pour moi mais .attr('href', function(i) { return $(this).attr('href') + '?q=testing'; }) a fait.

3 votes

@elfbertf ça marche pour moi. Utilisez-vous jquery >= 1.4 ? Et avez-vous inclus la variable href comme deuxième argument ?

0 votes

$("#calculator").attr("href", function (i, href) { return href + '?ves=' + 23 + '&v='+ 'sdfds' ; }) ; pas de travail

3voto

Diodeus Points 67946
$("a.directions-link").attr("href", $("a.directions-link").attr("href")+"...your additions...");

2 votes

C'est faux. Il applique le href de la première correspondance ".directions-link" à tous les liens de cette classe. jsfiddle.net/yuezewaw

-1voto

Bikram Shrestha Points 51

Voici ce que j'ai essayé de faire pour ajouter un paramètre dans l'url qui contient le caractère spécifique dans l'url.

jQuery('a[href*="google.com"]').attr('href', function(i,href) {
        //jquery date addition
        var requiredDate = new Date();
        var numberOfDaysToAdd = 60;
        requiredDate.setDate(requiredDate.getDate() + numberOfDaysToAdd); 
        //var convertedDate  = requiredDate.format('d-M-Y');
        //var newDate = datepicker.formatDate('yy/mm/dd', requiredDate );
        //console.log(requiredDate);

        var month   = requiredDate.getMonth()+1;
        var day     = requiredDate.getDate();

        var output = requiredDate.getFullYear() + '/' + ((''+month).length<2 ? '0' : '') + month + '/' + ((''+day).length<2 ? '0' : '') + day;
        //

Exemple de travail Cliquez sur

1 votes

Quel est le but de ce post ? S'agit-il d'une question ou d'une réponse ? Ou juste un commentaire bizarre ? Si c'est le dernier, vous postez au mauvais endroit ;-)

0 votes

J'ai créé l'échantillon de démonstration dans jsfiddle, mais le lien était incorrect. Maintenant il pointe vers la bonne url.

0 votes

Votre "réponse" n'a aucun sens, il s'agit plutôt d'une déclaration bizarre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X