Wie Sie sehen, habe ich Liste und Schaltfläche. Wenn ein "Klick" -Ereignis auf der Schaltfläche ausgelöst wird, füge ich dynamisch ein neues Element zur Liste hinzu. Nachdem ein neues Element zur Liste hinzugefügt wurde, möchte ich es im Hover-Status mit Javascript animieren, aber es funktioniert nicht. Mit fest codierten Listenelementen ist alles in Ordnung.Css3 dynamisch hinzugefügt Element nicht animiert werden
Die erste Lösung, die in den Sinn kommt, besteht darin, die maximale Anzahl der Listenelemente fest zu codieren und zu verbergen, was nicht notwendig ist. Aber was, wenn ich die maximale Anzahl der Elemente nicht kenne?
Html
<section>
<div class='wrap'>
<ul>
<li class="box"></li>
<li class="box stacked"></li>
</ul>
</div>
<button> addBox </button>
</section>
Css/Sass
.box
width: 100px
height: 100px
border: 1px solid black
background: orange
flex-basis: 1
.stacked
margin-left: -50px
.up
animation-name: boxUp
animation-duration: 300ms
animation-timing-function: ease-in-out
animation-delay: 0s
animation-iteration-count: 1
animation-direction: normal
animation-fill-mode: forwards
@keyframes boxUp
from
transform: translate(0, 0)
to
transform: translate(0, -25px)
Javascript
$('button').click(function(e) {
$('ul').append($('<li>').attr('class', 'box stacked'));
});
$('.box').hover(function() {
$(this).addClass('up');
}, function(){
$(this).removeClass('up');
});
Verwenden Delegation, wenn es sich um ein dynamisch hinzugefügt Element ist. – Harry
Danke. Eine Lösung gefunden. $ ('ul'). on ('mouseenter mouseleave', 'li', Funktion() { $ (this) .toggleClass ('up'); }); – user7666810
Ja, posten Sie diese Antwort – user7666810