Tengo una lista de artículos como tal:

<article>
  <a class="title" href="http://somelink1.com">Some Link</a>
  <p>content</p>
</article>

<article>
  <a class="title" href="http://somelink2.com">Some Link</a>
  <p>content</p>
</article>

<article>
  <a class="title" href="http://somelink3.com">Some Link</a>
  <p>content</p>
</article>

Estoy tratando de tomar el atributo href y copiarlo en cada <article> como onClick.

Tengo este jQuery que casi funciona, pero solo usa la URL del primer artículo para todos los demás.

$("article").each(function() {
  var copyLink = $("a.title").attr("href");
  $(this).click(function() {
    window.location = copyLink;
  });
});

¡Ayuda por favor!

0
Charlie Wedel 17 oct. 2018 a las 03:15

2 respuestas

La mejor respuesta

Debe navegar hasta la etiqueta .title para cada uno de los artículos. .find(".title")

$(document).ready(function() {
  $("article").each(function() {
    var copyLink = $(this).find(".title").attr("href");
    
    $(this).click(function() {
      window.location = copyLink;
    });
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<article>
  <a class="title" href="http://somelink1.com">Some Link</a>
  <p>content</p>
</article>

<article>
  <a class="title" href="http://somelink2.com">Some Link</a>
  <p>content</p>
</article>

<article>
  <a class="title" href="http://somelink3.com">Some Link</a>
  <p>content</p>
</article>
1
Jerdine Sabio 17 oct. 2018 a las 00:23

Para hacer que jQuery ya no tome solo el primer href, debe hacer que busque en el elemento actual de $ .each

var copyLink = $(this).find("a.title").attr("href");

Para que su script funcione, puede hacer algo como esto:

$("article").each(function() { $(this).click(function() { window.location =  $(this).find("a.title").attr("href"); }); });

Pido disculpas por cualquier error tipográfico. Escribí la respuesta desde mi teléfono.

1
Cornel Raiu 17 oct. 2018 a las 00:26