/ / Buscar, reemplazar en jquery para cada elemento - jquery

Buscar, reemplazar en jquery para cada elemento - jquery

Tengo esto en esta var: "ver" Aquí tengo algunas líneas como esta:

<div class="link" id="1"><a ...>Anchor</a></div>
<div class="link" id="2"><a ...>Anchor 2</a></div>

Busco un código en jquery que convierte el código anterior en:

<div class="link" id="1"><a ...><img src="/images/...?anchor=Anchor" /></a></div>
<div class="link" id="1"><a ...><img src="/images/...?anchor=Anchor 2" /></a></div>

Qué espero del código: Encuentre cada ancla - Consígala - Genere una imagen que muestre este ancla. PS: Tengo la función para "Generar imagen".

Resuelto:

$(".link").each(function(){

anchor =  $(this).find("a").text();
$(this).find("a").html("<img src="/images/generateLink.php?nr="+encodeURIComponent(anchor)+"" width="39" height="12"/>");

});

Respuestas

2 para la respuesta № 1

Supongo que la mejor manera de hacerlo es usando una expresión regular.

jQuery(".link").each(function() {
jQuery(this).html(
jQuery(this).html().replace(/<a(.*)>(.*)</a>/g,
"<a $1><img src="/images/..?anchor=$2" /></a>")
);
});

En la primera línea le dices a jQuery que obtenga cada elemento con la clase "enlace". Luego ve y encuentra cada enlace dentro de ese elemento usando "/(.*) </a> / g".

El primer grupo (un grupo se ve así: "(. *)") Representa el primer grupo que queremos capturar, porque necesitaremos la Información que ese elemento lleva consigo.

El segundo grupo es la información que queremos almacenar, por lo que sabemos qué variable dar a nuestra imagen url.

En la cuarta línea iremos y reemplazaremos lo que necesitamos. Cada signo de $ seguido de un número es un grupo que hemos capturado en la tercera línea.

Si quieres hacer algunas pruebas en expresiones regulares, seguramente te recomiendo http://gskinner.com/RegExr/


0 para la respuesta № 2

Si entendí, debes cambiar la línea con:

$(this).find(a).text().replaceWith(anchor);

por

$(this).find(a).text(varwithnewcontent);

Si no, lo siento!