2010-11-26 5 views
1

Ich kann nicht richtig funktionieren, eigentlich überhaupt. Was ich bisher gemacht habe funktioniert, aber ich möchte eine Nachricht einblenden und dann ausblenden. Nachdem es ausgeblendet ist, möchte ich das div vollständig entfernen.Fadein Fadeout Hilfe

Kann mir jemand sagen, was ich hier vermisse?

var div = $('<div>').attr('id', 'error').html('Cannot Be Blank'); 
    $('body').append(div); 

Antwort

1
var div = $('<div />').attr('id', 'error') 
         .html('Cannot Be Blank') 
         .hide(); 
$('body').append(div); 
$("#error").fadeIn("slow", function() { 
    $(this).fadeOut("slow", function() { 
     $(this).remove(); 
    });  
}); 

Demo: http://jsfiddle.net/karim79/wpxCk/

Um sicherzustellen, dass die fadeout nach der FadeIn geschieht, sollte es innerhalb fadeIn Callback ausgelöst werden. In ähnlicher Weise sollte das Entfernen des Fehler-Div innerhalb des Rückrufs von fadeOut erfolgen. Siehe:

+0

Das ist besser :) – benhowdle89

+0

Dank Ben und dank Karim – Jim

+0

Danke für die Links Karim. Ich bin dorthin gegangen, bevor ich hierher kam, aber ich habe es nicht verstanden. Warum ist alles eine Funktion in JQuery? Es ist ein bisschen geheimnisvoll. – Jim

0
$(div).fadeOut('slow', function() { 
    // Animation complete. 
}); 

    $(div).remove(); 

Fügen Sie diese nach dem aktuellen Code :)

+0

Sweet! Vielen Dank!! – Jim

+0

Hat es dann funktioniert? Akzeptiere die Antwort, wenn es passiert :) – benhowdle89

+0

Eigentlich sagt SO, dass ich nach 2 Minuten annehmen kann. Dein Code hat funktioniert. Wem schenke ich den Kredit? Du oder Karim? – Jim

0

Sie können es wie folgt tun:

$('<div>').attr('id', 'error').html('Cannot Be Blank').appendTo('body') 
      .hide().fadeIn().fadeOut(function() { $(this).remove(); }); 

Wahrscheinlich aber würden Sie wollen eine Klasse hier für Styling verwenden ... es sei denn, es eine ID benötigt, können Sie es weglassen, und in späteren Versionen von jQuery, verkürzen Sie es an:

$('<div>', { html: 'Cannot Be Blank' }).appendTo('body') 
    .hide().fadeIn().fadeOut(function() { $(this).remove(); }); 
+0

Hallo Nick, vielen Dank dafür. Ich bin noch sehr neu dabei. – Jim

1
So

müßten die jQuery-Funktionen Sie sind wie:

1) .fadeIn ([Dauer], [Rückruf])
2) .fadeOut ([Dauer], [Rückruf])
3) .remove ([Selektor])

bedeutet, dass Sie sie in dieser Reihenfolge verschachteln und als Rückrufe platzieren würden.

errordiv = $("#error"); 
$(errordiv).fadeIn("slow", function(){ 
    $(errordiv).fadeOut("slow", function() { 
     $(errordiv).remove(); 
    }) 
}); 
+0

Hallo Vuk. Was genau ist ein Rückruf? – Jim

+0

Dies ist eine Referenz auf einen ausführbaren Code, der als Argument an eine Funktion übergeben wird, die ihn später ausführt. Einige Erklärung hier - http://stackoverflow.com/questions/3616181/callback-function-meaning/3616266#3616266 – Vuk

+0

Vielen Dank für den Link sowie die Erklärung. Vuk, kann ich dir bitte eine Frage zu meinem Code stellen? Ich habe die Effekte so, wie ich sie will, aber ich kann nicht kontrollieren, wo das Fehler-Div platziert ist. Was muss ich tun, um es dahin zu bringen, wo ich es will? – Jim

Verwandte Themen