Ich habe diese einfache Funktion:jquery Knebel() löst unerwünschte Animation
$('.tools-dropdown-launch').click(function(e) {
e.preventDefault();
$('.tools-dropdown-content').toggle(function() {
fixPanelHeight();
});
});
die Sichtbarkeit eines anderen div wechseln sollte, aber mit keine Animationen. Stattdessen habe ich eine ähnliche slideToggle()
Art der Animation. die Funktion ausgelöst ist folgende:
function fixPanelHeight() {
var maxPanelHeight = 0;
$(".inner-menu-panel-containter").children(".menu-panel").each(function(){
var element = $(this);
element.css("height", "auto");
if (element.height() > maxPanelHeight) {
maxPanelHeight = element.height();
}
})
if (maxPanelHeight > 0) {
$(".inner-menu-panel-containter").children(".menu-panel").height(maxPanelHeight);
}
}
Ich habe versucht, die erste Funktion zu
$('.tools-dropdown-launch').click(function(e) {
e.preventDefault();
$('.tools-dropdown-content').toggle();
});
verändert und es funktioniert wie erwartet: Ich habe keine Animationen aber die Funktion (natürlich) auslöst nicht.
Warum passiert das?
Es gibt keine Höhenübergänge in der CSS und es gibt keine slideToggle()
irgendwo in der JS-Datei.
ist dies mit
$('.tools-dropdown-content').slideToggle(0 , function() {
fixPanelHeight();
});
gelöst, aber ich würde etwas besser als dieses quickfix bevorzugen.
Die Übergabe der vollständigen Callback-Funktion an die Methode jq [toggle()] (http://api.jquery.com/toggle/) ruft Animationen mit der Standarddauer (400ms) auf. Jetzt ist nicht klar, was ist dein erwartetes Verhalten? Was ist falsch daran, nur 'toggle()' zu benutzen? –
Ich erwarte keine Animation, da ich toggle() und nicht slideToggle() in meiner Funktion verwende. Gibt es eine Möglichkeit, dies zu vermeiden. Ich muss Anzeige umschalten: keine/Block ohne Spezialeffekt, Übergang oder Animation – valerio0999
Aber ich bin immer noch nicht sicher, warum können Sie nicht einfach '.toggle()'? Es wird keine Animation verwendet. Und weil es dann synchron ist, können Sie einfach folgendes verwenden: '$ ('. Tools-dropdown-content'). Toggle(); fixPanelHeight(); ' –