Алдыңғы (белгісіз) анимация/эффект аяқталғаннан кейін jQuery-те кодты қалай іске қосу керек?

I want to hide a DIV element after the previous effects/movements have completed. If I knew the sequence I could just add code to callback function that I give to .animate() (for example). However in this situation I don't have access to that state (it may or may not be going through an animation/effect). So the two animations/effects are triggered by two different events (button clicks for example).

So I would run fadeOut after the DIV element has finished the current animation/effect. Is this possible with jQuery?

Thanks.

EDIT: So the target is to decouple the current action (fadeOut() for example) code from the previous animation code.

EDIT2: Сұрақты анық түсіндірді.

0
Неліктен жүйелілікке жете алмайсыз? Сондай-ақ, jQuery деп айтады және CSS3 анимациясын айтпайды?
қосылды автор Joey, көзі
@JoeyVanOmmen Мен jQuery екенін білемін, себебі мен оны :) жаздым. Мәселе мынада, алдыңғы анимация әртүрлі оқиғалардан келесіге қарағанда іске қосылады (мысалы екі бөлек түйме-түймені).
қосылды автор Lycha, көзі

5 жауаптар

Тек .fadeOut() деп теріңіз және ол автоматты түрде fx кезегінің соңына қосылады:

http://jsfiddle.net/gilly3/f4vNH/

2
қосылды
Шүкір, jQuery мұны істей алатындығын білмедім, бұл оны шешеді. Fx кезектер туралы көбірек білуім керек.
қосылды автор Lycha, көзі
Қосымша fadeOut кейін қосымша кодты іске қосу үшін .fadeOut() қайтаруға болады.
қосылды автор Lycha, көзі

Тұтынушы оқиғасын жасау және онымен тірі байланыс жасау туралы не айтасыз?

<script>
$("p").live("myCustomEvent", function(e, myName, myValue) {
  $('#div').hide();

});
$("button").click(function() {
  $("p").trigger("myCustomEvent");
});
</script>
0
қосылды

Арнайы кеңес алу үшін бізге алдыңғы анимациялық кодты көрсету керек. JQuery-де анимация эффектілері біріктірілуі мүмкін және jQuery автоматты түрде оларды бір-бірінен кейін бір-біріне орналастырады. Немесе келесі операцияның басталуын бастау үшін бір операцияның аяқтау функциясын пайдалануға болады.

Мысалдар:

$("#item").fadeIn(1000).delay(1000).fadeOut(500);
$("#item").animate({
    opacity: 0.75,
    left: '+=250',
 }, 5000).delay(1000).fadeOut(500);

.animate() әдісі, сондай-ақ, анимация аяқталған кезде кез-келген операцияны бастау үшін пайдалануға болатын аяқтау функциясына ие, бірақ егер келесі операция анимацияның өзі болса, онда автоматты түрде ілінісуді қолдану оңай Аяқтау функциясының орнына жоғары емес:

$("#item").animate({
    opacity: 0.75,
    left: '+=250',
 }, 5000, function() {alert("Animation finished."});
0
қосылды

Жанданған қоңыраудағы толық функция параметрін іздейміз деп ойлаймын:

http://api.jquery.com/animate/

$('#clickme').click(function() {
  $('#book').animate({
    opacity: 0.25,
    left: '+=50',
    height: 'toggle'
  }, 5000, function() {
   //Animation complete.
  });
});
0
қосылды

Бұл оңай, тек сіздің анимацияңызды кезекке қойыңыз

$("#myDiv").queue(function(){
    $(this).fadeOut();
});

Ол анимация кезегі аяқталғаннан кейін орындалады. Сонымен, анимация кезегінен кейін fadeOut-ге дейін кодты қосып, кез келген нәрсені жасай аласыз.

0
қосылды