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

233
Views
Ocultar imagen al hacer clic en el botón y mostrar texto

 jQuery(".b2b-btn").click(function() { jQuery(".b2b-image").removeClass('hideb2bimage'); jQuery(".b2b-text").removeClass('expanded'); jQuery(this).closest('col-b2b').find(".b2b-image").toggleClass('hideb2bimage'); jQuery(this).closest('col-b2b').find(".b2b-text").toggleClass('expanded'); });
 .hideb2bimage { height: 0px; visibility: hidden; } .b2b-text { height: 0px; visibility: hidden; opacity: 0; transition: visibility 0s ease-out 500ms, opacity 500ms; } .expanded { height: auto; visibility: visible; opacity: 1; transition: visibility 0s ease-in 0s, opacity 500ms; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="main-row"> <div class="col-b2b"> <img class="b2b-image" scr="https://picsum.photos/200/300?random=1"> <p class="b2b-text">this is some text</p> <button class="b2b-btn">Please Click</button> </div> <div class="col-b2b"> <img class="b2b-image" scr="https://picsum.photos/200/300?random=2"> <p class="b2b-text">this is some text</p> <button class="b2b-btn">Please Click</button> </div> <div class="col-b2b"> <img class="b2b-image" scr="https://picsum.photos/200/300?random=3"> <p class="b2b-text">this is some text</p> <button class="b2b-btn">Please Click</button> </div> </div>

Quiero mostrar texto y ocultar imagen al hacer clic en el botón. Pero solo quiero mostrar el texto de la columna en la que se hace clic en el botón. Además, en caso de que alguien haga clic en la primera columna y muestre el texto de una columna y luego haga clic en el botón de la segunda columna, debería ocultar el texto de la primera columna. Arriba está el código que estoy usando, hágame saber qué error estoy cometiendo. También quiero hacer que la función de clic en la imagen también.

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Varios errores tipográficos y algunos errores CSS:

  • jQuery(this).closest('col-b2b') debe ser jQuery(this).closest('.col-b2b') .
  • <img class="b2b-image" scr=" debe ser <img class="b2b-image" src=" .
  • visibility no se puede transformar. Usa opacity en su lugar.
  • la height y otras longitudes no se pueden transformar en valores auto . Trabaja con la animación max-height su lugar.

 jQuery(".b2b-btn").click(function() { jQuery(".b2b-image").removeClass('hideb2bimage'); jQuery(".b2b-text").removeClass('expanded'); jQuery(this).closest('.col-b2b').find(".b2b-image").toggleClass('hideb2bimage'); jQuery(this).closest('.col-b2b').find(".b2b-text").toggleClass('expanded'); });
 .b2b-image { max-height: 100vh; opacity: 1; transition: all 0.5s ease-in; } .hideb2bimage { max-height: 0; opacity: 0; } .b2b-text { height: 0; opacity: 0; transition: all 0.5s ease-out; } .expanded { height: auto; opacity: 1; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="main-row"> <div class="col-b2b"> <img class="b2b-image" src="https://picsum.photos/200/300?random=1"> <p class="b2b-text">this is some text</p> <button class="b2b-btn">Please Click</button> </div> <div class="col-b2b"> <img class="b2b-image" src="https://picsum.photos/200/300?random=2"> <p class="b2b-text">this is some text</p> <button class="b2b-btn">Please Click</button> </div> <div class="col-b2b"> <img class="b2b-image" src="https://picsum.photos/200/300?random=3"> <p class="b2b-text">this is some text</p> <button class="b2b-btn">Please Click</button> </div> </div>

about 4 years ago · Juan Pablo Isaza Report

0

Aquí hay una sugerencia con una transición suave sin ningún parpadeo:

  • Corrija el atributo de imágenes scr a src
  • Cree un contenedor común DIV .b2b-cont para el texto y la imagen
  • Establecer la imagen como una capa subyacente absoluta , casi como una imagen de fondo
  • Use CSS Flex para que la longitud del texto dicte la altura de las cajas
  • Simplemente cambie con JS una clase como .is-active desde la columna principal más cercana . Eliminar .is-active de todas las demás columnas

Ejemplo:

 jQuery(($) => { // DOM ready and $ alias in scope $(".b2b-btn").on("click", function() { const $col = $(this).closest(".col-b2b"); const $otherCol = $(this).closest(".main-row").find(".col-b2b").not($col); $col.toggleClass("is-active"); $otherCol.removeClass("is-active"); }); });
 /*QuickReset*/ * {margin:0; box-sizing: border-box;} .main-row { display: flex; } .col-b2b { display: flex; flex-flow: column; flex: 1; } .b2b-cont { flex: 1; position: relative; } .b2b-image { position: absolute; height: 100%; width: 100%; object-fit: cover; transition: 0.3s; } .b2b-text { padding: 1em; visibility: hidden; opacity: 0; transition: 0.3s; } .col-b2b.is-active .b2b-text { visibility: visible; opacity: 1; } .col-b2b.is-active .b2b-image { visibility: hidden; opacity: 0; }
 <div class="main-row"> <div class="col-b2b"> <div class="b2b-cont"> <img class="b2b-image" src="https://picsum.photos/200/300?random=1"> <p class="b2b-text">this is some text</p> </div> <button class="b2b-btn" type="button">Please Click</button> </div> <div class="col-b2b"> <div class="b2b-cont"> <img class="b2b-image" src="https://picsum.photos/200/300?random=2"> <p class="b2b-text">this is some text</p> </div> <button class="b2b-btn" type="button">Please Click</button> </div> <div class="col-b2b"> <div class="b2b-cont"> <img class="b2b-image" src="https://picsum.photos/200/300?random=3"> <p class="b2b-text">This text, since it's the longest, it dictates all other elements heights thanks to CSS flex. If you learn CSS flex there's no going back, you can only start to learn to cook, pet your cat, dry-leaf-jumping...</p> </div> <button class="b2b-btn" type="button">Please Click</button> </div> </div> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>

about 4 years ago · Juan Pablo Isaza Report

0

Considera lo siguiente.

 jQuery(function($) { $(".b2b-btn").click(function() { var btn = $(this); var img = btn.parent().find("img"); var txt = btn.parent().find("p"); var state = txt.hasClass("expanded"); $(".main-row .b2b-text").removeClass("expanded"); $(".main-row .b2b-image").removeClass("hideb2bimage"); if (state) { img.removeClass("hideb2bimage"); txt.removeClass("expanded"); } else { img.addClass("hideb2bimage"); txt.addClass("expanded"); } }); });
 .col-b2b { display: inline-block; width: 200px; } .hideb2bimage { display: none; } .b2b-text { display: none; } .expanded { display: block; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="main-row"> <div class="col-b2b"> <img class="b2b-image" src="https://picsum.photos/200/300?random=1"> <p class="b2b-text">this is some text</p> <button class="b2b-btn">Please Click</button> </div> <div class="col-b2b"> <img class="b2b-image" src="https://picsum.photos/200/300?random=2"> <p class="b2b-text">this is some text</p> <button class="b2b-btn">Please Click</button> </div> <div class="col-b2b"> <img class="b2b-image" src="https://picsum.photos/200/300?random=3"> <p class="b2b-text">this is some text</p> <button class="b2b-btn">Please Click</button> </div> </div>

Usar .toggleClass() puede ser realmente útil en estos casos de uso.

Descripción: agregue o elimine una o más clases de cada elemento en el conjunto de elementos coincidentes, según la presencia de la clase o el valor del argumento de estado.

https://api.jquery.com/toggleclass/

Actualizar

Soy más capaz de entender su necesidad. He actualizado el código anterior para ayudar a determinar el estado actual del texto. Si está expandido, contraerlo. Pero para todos, colapsar el texto y mostrar la imagen independientemente del botón en el que se haga clic.

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!