2012-04-03 4 views
0

Ich habe ein Warnmeldung Element, das ich nach 2 Sekunden ausblenden möchte. Ich habe ein Javascript, das nach dem Laden der Seite ausgeführt wird, und es werden keine Warnmeldungen angezeigt, wenn die Seite geladen wird.Wie erkennt man eine Änderung in HTML-Element in jQuery

Es gibt jedoch Warnungen, die nach dem Laden der Seite angezeigt werden. Diese Warnungen bleiben aktiviert. Wie kann ich Änderungen beobachten, d. H. Wenn das Warnmeldungselement wieder sichtbar ist, um es nach 2 Sekunden auszublenden?

Dies ist der Code, den ich die erste Ausschreibung zu verstecken verwendet:

$(document).ready(function(){ 
    var hide_delay = 4000; // starting timeout before first message is hidden 
    var hide_next = 800; // time in mS to wait before hiding next message 
    $(".alert-message").slideDown().each(function(index,el) { 
     window.setTimeout(function(){ 
     $(el).slideUp(); // hide the message 
     }, hide_delay + hide_next*index); 
    }); 

Danke.

+3

Es gibt nicht wirklich eine effiziente Möglichkeit, dies zu tun. Ist es nicht möglich, den Code zu ändern, der Warnungen anzeigt? –

+0

Der beste Weg, an den ich denken kann ist, es ständig mit setInterval oder setTimeout zu überprüfen, aber das ist eine schlechte Lösung. Am optimalsten wäre es, sich an diese "Warnungen" zu gewöhnen, mit denen Sie arbeiten müssen. – Kris

+0

Hallo Kris, es scheint die richtige Richtung zu sein. Könnten Sie genauer sein? Danke im Voraus. – AdamNYC

Antwort

2

Es klingt für mich wie Sie einen Timer möchten? Was würden Sie tun möchten, ist, am Ende der Funktion/Code, der die Warnung an den Benutzer angezeigt wird, kann etwas wie folgt aus:

var timer = window.setTimeout(function() { 
    // code here to hide the alert 
}, 2000); 

Die Zahl 2000 ist in Millisekunden und sollte, dass in etwa 2 Sekunden bedeuten Nachdem der Timer erstellt wurde, wird der Code in der anonymen Funktion ausgeführt, die den Alarm dann ausblenden würde.

1

Ich denke, Sie möchten etwas wie das "DOMNodeInserted" -Ereignis, aber dies wird nicht in IE unterstützt. Sie können also liveQuery verwenden, um stattdessen DOM-Änderungen zu hören. Hoffentlich ist das etwas, wonach Sie suchen.

LiveQuery

Sie können es dann wie folgt verwenden, um Element Änderungen zu hören:

$('#elementToListenTo').livequery(function(){ 
    // If $(this) element has been changed, perform things below. 
    var timeout = window.setTimeout(function(){ 
     // Perform a task after 2 seconds 
     $(".alert-message").slideDown(); 
    },2000); 
}); 
1

Hier ist eine Fiddle Idee: http://jsfiddle.net/ekr8v/4/

Wenn Sie eine Warnung zu erstellen, geben Sie ihm eine ID und Sie erstellen eine Zeitüberschreitung (siehe Eli Sands Code oben), die diese ID nach 2 Sekunden entfernt.

Im Tutorial in meiner Geige habe ich einfach den Unix-Timestamp benutzt, der meiner Meinung nach hier gut funktionieren würde.

+0

Sie müssen dem Element keine einzigartigen Eigenschaften zuweisen. Wenn das Element in einer Funktion aus dem Nichts erzeugt wird, müssen Sie es nur einer Variablen zuweisen, und dann können Sie innerhalb der anonymen Funktion, die vom Timer ausgelöst wird, auf diese Variable verweisen. ZB: 'var elem = $ ('

some alert
');' beziehen Sie sich dann auf 'elem' innerhalb Ihres Timers wie' $ (elem) .remove(); '. –

Verwandte Themen