Gibt es eine Möglichkeit zu erkennen, ob die CSS-Eigenschaft "display" eines Elements geändert wurde (ob keine oder ein Block oder ein Inline-Block ...)? wenn nicht, irgendein Plugin? Vielen Dank
quelle
Gibt es eine Möglichkeit zu erkennen, ob die CSS-Eigenschaft "display" eines Elements geändert wurde (ob keine oder ein Block oder ein Inline-Block ...)? wenn nicht, irgendein Plugin? Vielen Dank
Hinweis
Mutationsereignisse sind seit dem Schreiben dieses Beitrags veraltet und werden möglicherweise nicht von allen Browsern unterstützt. Verwenden Sie stattdessen einen Mutationsbeobachter .
Ja, du kannst. Das Modul DOM L2-Ereignisse definiert Mutationsereignisse . einer von ihnen - DOMAttrModified ist das, was Sie brauchen. Zugegeben, diese sind nicht weit verbreitet, werden aber zumindest in Gecko- und Opera-Browsern unterstützt.
Versuchen Sie etwas in diese Richtung:
document.documentElement.addEventListener('DOMAttrModified', function(e){
if (e.attrName === 'style') {
console.log('prevValue: ' + e.prevValue, 'newValue: ' + e.newValue);
}
}, false);
document.documentElement.style.display = 'block';
Sie können auch versuchen, das IE-Ereignis "propertychange" als Ersatz für zu verwenden DOMAttrModified
. Es sollte ermöglichen, style
Änderungen zuverlässig zu erkennen .
class
Attributs (oder eines anderen Attributs, wenn Attributselektoren im CSS vorhanden sind) eines Vorfahren des Elements kann auch das Element ändern, sodass Sie alleDOMAttrModified
Ereignisse im Dokumentstammelement auf behandeln müssen Achten Sie darauf, alles zu fangen.Sie können das attrchange jQuery-Plugin verwenden . Die Hauptfunktion des Plugins besteht darin, eine Listener-Funktion bei Attributänderungen von HTML-Elementen zu binden.
Codebeispiel:
quelle
Sie können die
css
Funktion von jQuery verwenden, um die CSS-Eigenschaften zu testen, z.if ($('node').css('display') == 'block')
.Colin hat Recht, dass es kein explizites Ereignis gibt, das ausgelöst wird, wenn eine bestimmte CSS-Eigenschaft geändert wird. Möglicherweise können Sie es jedoch umdrehen und ein Ereignis auslösen, das die Anzeige festlegt, und was auch immer.
Erwägen Sie auch das Hinzufügen von CSS-Klassen, um das gewünschte Verhalten zu erzielen. Oft können Sie einem enthaltenden Element eine Klasse hinzufügen und CSS verwenden, um alle Elemente zu beeinflussen. Ich schlage oft eine Klasse auf das body-Element, um anzuzeigen, dass eine AJAX-Antwort aussteht. Dann kann ich CSS-Selektoren verwenden, um die gewünschte Anzeige zu erhalten.
Ich bin mir nicht sicher, ob Sie danach suchen.
quelle
Verwenden Sie für Eigenschaften, für die sich der CSS-Übergang auswirkt, das Transitionend-Ereignis, z. B. für den Z-Index:
quelle
Das kannst du nicht. CSS unterstützt keine "Ereignisse". Darf ich fragen, wofür du es brauchst? Schauen Sie sich diesen Beitrag hier auf SO an. Ich kann mir keinen Grund vorstellen, warum Sie ein Event mit einem Stilwechsel verbinden möchten. Ich gehe hier davon aus, dass der Stilwechsel irgendwo anders durch ein Stück Javascript ausgelöst wird. Warum nicht dort zusätzliche Logik hinzufügen?
quelle