2012-07-31 24 views
5

Sto cercando di aggiungere semplicemente una virgola dopo ogni elemento in una lista.Errore di sintassi JQuery, espressione non riconosciuta:,

$('#tag_cloud-2 div.tagcloud a').each(function(){ 
    console.log($(this)); 
    $(", ").after($(this)); 
}); 

La console espelle i tag quindi so che li sta trovando. Ho provato anche insertAfter, ma senza fortuna. Questo come dovrebbe essere una cosa così semplice da fare !! Grazie per aver sottolineato cosa mi manca.

+0

'", "' è interpretato come selettore e come tale non è valido. Anche il tuo uso di '.after()' è semplicemente sbagliato. Vedi: http://api.jquery.com/after/ –

+0

penso tu voglia dire '$ (this) .after (',');' – neokio

+0

Dove stai cercando di scrivere questo? La lista separata da virgola deve essere inviata alla console o qualche cosa? – PCasagrande

risposta

5

$(', ') viene considerato come selettore (non valido), poiché non può creare un nodo di testo con stringa contenente.

Ma

$("<span>, </span>").after($(this)); funzionerà a causa di una marcatura valida.

Prova:

$(this).after(', '); 

O

$(this).append(', '); 

O

$(this).text(function(i, oldText) { 
    return oldText + ', '; 
}) 
1

funzione di jQuery $() non funziona proprio così. Chiamarlo su una stringa non di markup non crea un nodo di testo che contiene quella stringa.

È possibile invertire la logica, a partire da $(this), quindi chiamare after(), però:

$(this).after(", "); 

Perché after() crea un nuovo nodo di testo se uno dei suoi argomenti è una stringa non markup.

Problemi correlati