2010-02-12 13 views
6

Sto tentando di modificare un collegamento utilizzando jQuery. I collegamenti sono generati dinamicamente e non ho alcun controllo sull'HREF esistente come vengono chiamati da un sito di terze parti.jQuery: aggiunta di testo a una dinamica esistente HREF

utilizzando jQuery, come posso cambiare un link da questo:

example.com/?one=1&two=1 

a questo:

example.com/?one=1&two=1&thisisadded=true 

così essenzialmente aggiungendo &thisisadded=true alla fine del collegamento?

I collegamenti che devono essere modificati sono all'interno del proprio div con una classe di my-link.

risposta

12
$('a.my-link').each(function() { 
    var href = $(this).attr('href'); 
    $(this).attr('href', href + '&thisisadded=true'); 
}); 

Sostituire selettore con un selettore jQuery che abbinerà link sul vostro sito, se il mio non è un buon enought.

+0

Grazie per la tua risposta rapida! Questo ha funzionato correttamente e ha aggiunto il testo "& thisisadded = true". È possibile rimuovere i parametri dal parametro ("& preview = 1 & TB_iframe = true")? Sto aprendo i collegamenti in una nuova scheda e non li voglio/ho bisogno li. Molte grazie, James – James

+0

Penso che dovresti accettare come risposta corretta. ;) – catandmouse

2
var href = $(this).attr('href'); 
$(this).attr('href', href + '&thisisadded=true') 

Ovviamente fare questo in un contesto in cui this è il vostro collegamento

+1

'$ (this)' funzionerà in callback dopo aver abbinato tutti i collegamenti che devono essere modificati. Ma se chiami il tuo codice in questo modo non ti darà i risultati che ti aspetteresti. – RaYell

+0

Sì, questo è quello che ho già detto, che dovresti essere in quel contesto, questo può essere usato su qualsiasi evento su quell'elemento, non è vero? –

1

Basta usare la selettore, e una funzione di callback per attr. Questo aggiungerà la parte aggiuntiva per tutti i link corrispondenti:

$('a.my_link').attr('href', function(i, a){ return a + "&thisadded=true" }); 

Quando si fornisce un callback al metodo attr, il primo parametro è il index e il secondo parametro è il valore originale attribute. Tutto ciò che viene restituito dal callback diventa il nuovo valore.

Nota: Questa funzione è disponibile in jQuery 1.1 e versioni successive. Non ottenere questo metodo confuso con il nuovo gruppo di metodi che accettano i callback introdotti in jQuery 1.4.

+0

+1 Suggerimento stupendo riguardo ai valori degli attributi! – Sampson

+0

Funziona, ma quando si fa clic su altri collegamenti continua ad aggiungere il valore al collegamento. qualche idea? – Notflip

Problemi correlati