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

305
Views
Eliminar en animación () no elimina

Tengo un #scenario identificación dividida que tiene varios elementos <p> como elementos secundarios. Quiero tener una función que los desvanezca uno por uno en orden inverso y luego los elimine del DOM. Estoy usando jQuery.

Mi código:

 function fadeAndDelete() { var elements = $("#scenario").children().get().reverse(); $.each( elements, function(index, element) { element.animate( {'color': 'rgba(0, 0, 0, 0)'}, 1000, function() { $(this).remove(); } ); } ) };

También traté de usar element.remove() y $(element).remove() , y ninguno de ellos funcionó.

Puntos de bonificación: en un mundo ideal, habría un intervalo de tiempo entre las eliminaciones del elemento (como si se usara una función sleep() entre los ciclos each()).

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

0

El animate() que estás usando es el DOM animado, no el de jquery:

https://developer.mozilla.org/en-US/docs/Web/API/Element/animate

animate(keyframes, options)

No hay un parámetro de devolución de llamada para esta función, por lo que no es que .remove() no funcione, es que nunca se llama a la función.

Para usar la animate de jquery, necesita un objeto jquery:

 $.each(elements, function(index, element) { $(element).animate(...

Sin embargo, tenga en cuenta que jquery es conocido por no poder animar colores sin un complemento adicional o usando css, por lo que su código no se animará, pero se llamará a .remove() .


Para el escenario de uno a la vez, puede usar setTimeout . Hay muchas respuestas existentes en SO para esto, pero aquí está su código:

 function fadeAndDelete() { var elements = $("#scenario").children().get().reverse(); $.each(elements, function(index, element) { setTimeout(function() { $(element).fadeOut(2000, function() { this.remove(); }); }, index*500); }); }; fadeAndDelete();
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id=scenario> <div>a</div> <div>b</div> <div>c</div> </div>

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!