Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

118
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!