2012-12-01 11 views
7

Sto effettivamente cercando di fare lo stesso come in questa domanda Change #hash tag to link on page load Ma penso perché sto ottenendo la stringa da un oggetto jQuery attributo data-caption qualcosa non funziona correttamente. Ho un elemento DOM come questoCome utilizzare javascript per sostituire i tag hash con collegamenti da un attributo dati jquery

<a class="thumbnail" rel="gallery" data-caption="#drink from somewhere #fun" data-pid="36" href="http://domain.com/something"><img src="http://domain.com/somephoto.png" alt="acee7bd0d8339b9ddcf4a259ec7ddeec"></a> 

Si tratta fondamentalmente di una miniatura che viene caricato in un modale allora sto cercando di afferrare la didascalia di attributo e creare link su qualsiasi tag hash

var caption = anchor.attr('data-caption') ? anchor.attr('data-caption') : null; 
console.log(caption); 

dove l'ancora variabile è un rappresentante oggetto jquery del collegamento

posso vedere c'è una didascalia se mi controllare il registro esso stampa "#drink da qualche #fun"

Così ora lanciando che in una regex sostituire fn

caption.replace(/#(\S*)/g,'<a href="http://twitter.com/#!/search/$1">$1</a>'); 

quindi aggiungere la didascalia al DOM con i collegamenti attivi.

Ma non succede nulla alla stringa didascalia Ho appena ottenere la stessa cosa che ho messo in.

** Modifica risposta stupido errore dimenticato di assegnare il valore restituito a una variabile

var captionLinks = caption.replace(/#(\S*)/g,'<a href="http://twitter.com/#!/search/$1">$1</a>'); 
+1

Proprio doppio controllo, si sta facendo 'caption = caption.replace (...)', 'non solo caption.replace (...)'? – Nope

+0

oh wow ... grazie lol – Brian

risposta

12

Se il codice della domanda è pubblicato esattamente come lo si utilizza, è necessario assegnare il risultato dello caption.replace(). La semplice chiamata .replace() non cambierà caption.

Supponendo che tutti si stanno facendo è questo:

caption.replace(/#(\S*)/g,'<a href="http://twitter.com/#!/search/$1">$1</a>'); 

provare a utilizzarlo in questo modo:

caption = caption.replace(/#(\S*)/g,'<a href="http://twitter.com/#!/search/$1">$1</a>'); 

Come per documentation per Replace:

Restituisce una nuova stringa con un po ' o tutte le partite di uno schema sostituite da una sostituzione. Il pattern può essere una stringa o un RegExp e la sostituzione può essere una stringa o una funzione da chiamare per ogni corrispondenza.

Ovviamente, se lo hai già fatto e semplicemente non lo hai pubblicato, il problema è un'altra cosa.

Fatemi sapere se questo è il caso e rimuoverò la mia risposta in quanto ovviamente non si applica.

+0

E 'stato un errore stupido. Grazie. – Brian

0

vorrei andare per /#(\S+)/g per evitare il singolo #

Problemi correlati