Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

119
Vistas
El selector jquery agrega varios div en lugar de uno para cada uno

Estoy tratando de mostrar una vista previa del enlace en cada enlace con jquery, pero en realidad mi código agrega varios divs (uno para cada enlace en el cuerpo) en lugar de uno para el enlace en sí.

aquí el violín: https://jsfiddle.net/eg4zwpk9/4/

mi código hasta ahora

 this.$(".Post-body").find('a').each((i, e) => { this.$('.Post-body').attr('id', 'value'); const isMobile = navigator.userAgentData.mobile; let controller = new AbortController(); let href = e.getAttribute("href"); console.log(href) if (isMobile === false) { fetch(`https://preview-api.bbspace.top/?url=` + encodeURIComponent(href), { method: "GET", mode: "cors", signal: controller.signal, credentials: "omit" }) .then((res) => res.json()) .then((response) => { console.log(response) if (!e.text.startsWith("http")) return; let $s = $('#value a') let imgResp = '<img class="screenImg" src="' + response.image + '" width="250">'; if (response.image === undefined) { imgResp = '<img class="screenImg" src="https://www.studioippocrate.com/wp-content/uploads/2017/11/pac-404.png" width="250">'; } this.$('#value a').append('<div class="dropdown-prev">\n' + ' <button class="dropbtn"><i class="fas fa-search"></i></button>\n' + ' <div class="dropdown-content-prev">\n' + ' <div class="donContainer">\n' + ' ' + imgResp + '' + ' <div class="titleDesc">' + response.description + '</div> ' + ' </div>\n' + ' </div>\n' + '</div>'); }); } });

¿Cómo puedo mostrar solo el resultado correcto para CADA enlace?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Agrega ese elemento de vista previa a todos los enlaces que están dentro de #valor. En lugar de esto:

 this.$('#value a').append('<div class="dropdown-prev">\n' + ' <button class="dropbtn"><i class="fas fa-search"></i></button>\n' + ' <div class="dropdown-content-prev">\n' + ' <div class="donContainer">\n' + ' ' + imgResp + '' + ' <div class="titleDesc">' + response.description + '</div> ' + ' </div>\n' + ' </div>\n' + '</div>');

Tienes que hacer así:

 $(e).append('<div class="dropdown-prev">\n' + ' <button class="dropbtn"><i class="fas fa-search"></i></button>\n' + ' <div class="dropdown-content-prev">\n' + ' <div class="donContainer">\n' + ' ' + imgResp + '' + ' <div class="titleDesc">' + response.description + '</div> ' + ' </div>\n' + ' </div>\n' + '</div>');

Ya tienes allí cada función que te da un elemento de enlace. Además, no tiene sentido asignar esa identificación a .Post-body.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Copié tu violín y lo corregí.
En resumen, cuando selecciona su enlace con this.$('#value a') antes de agregar el nuevo html, está seleccionando todos los enlaces de la página, por lo que agregará el nuevo html a todos sus enlaces.
Para corregirlo, puede convertir su e en jquery así: $(e).append(...)

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda