Ich möchte jQuery-Akkordeon in meinem Menü aktivieren und deaktivieren oder besser hinzufügen oder entfernen, ist es möglich, diese Bildschirm- oder Bildschirmgrößenänderung hinzuzufügen oder zu entfernen? Ich habe es versucht, aber es scheint nicht zu funktionieren, Das Akkordeon bleibt für die Änderung der Bildschirmgröße übrig.
%Vor%update
wenn sonst Teil wird,
%Vor% Wenn ich mit dem Wechsel von Hochformat zu Querformat beginne, funktioniert es, aber das Gegenteil funktioniert nicht, das heißt, wenn ich von Querformat zu Hochformat gehe, funktioniert es nicht. Und gibt auch Fehler in der Konsole kann nicht call methods on accordion prior to initialization; attempted to call method 'destroy'
Neu jsfield
Ich möchte Akkordeon mit der Bildschirmgröße entfernen und hinzufügen.
Hinweis:
jQuery Version 1.11.4
überprüfe Techbreak's Antwort Ссылка es scheint zu funktionieren, aber wenn du die Konsole überprüfst, wird " Uncaught Error: cannot call methods on accordion prior to initialization;
versucht zu Aufrufmethode 'destroy' ". und in der tatsächlichen Umsetzung funktioniert es nicht, wenn ich von Landschaft zu Porträt gehe.
Und ich habe auch einen Workaround gepostet, für den Moment in meiner Implementierung funktioniert es für mich, aber ich weiß, dass dies nur eine Problemumgehung ist.
Hier ist eine weitere Geige , wenn Sie die Bildschirmgröße langsam erhöhen oder verringern, können Sie das Problem bemerken.
Screenshot des Problems, Sie können feststellen, für einige von ihnen ist das Akkordeon für die Vergrößerung deaktiviert und für einige ist es nicht deaktiviert.
OK. Eigentlich hast du das Problem mit vielen verschiedenen Instanzen des Akkordeons gelöst, was aus deinem ursprünglichen Beitrag nicht ersichtlich war, also den falschen Selektor .footer-area
, der hier verwendet wird:
wurde angepasst.
Problem # 1:
Da Sie das Widget basierend auf der Seitengröße erstellen und löschen müssen, müssen Sie vor dem Aufruf einer beliebigen Methode des Akkordeons nach der Existenz jeder Instanz des Widgets suchen. Andernfalls werden wir den berüchtigten Fehler " ...cannot call methods on *some-widget* prior to initialization.
" p>
Dieses Problem wird gelöst, indem nach dem Vorhandensein von data
gesucht wird, das an das Element bei der Erstellung der Widget-Instanz angefügt wurde:
Problem # 2:
Wenn Sie zurück zum unstrukturierten Menü wechseln, wird die Seitenhöhe erhöht und die Seite zeigt die vertikale Bildlaufleiste, was zu einer anderen Seitenbreite führt. Die Größe der Seite wird erneut angepasst und Ihre Überprüfung auf window.width wird sich als instabil erweisen.
Aus diesem Grund müssen Sie nach jQuery('body').width() + scrollbar_width()
suchen. Nehmen Sie einfach die bereitgestellte Funktion, um die Bildlaufleistenbreite unverändert zu erhalten, und fügen Sie sie in Ihre Snippet-Bibliothek ein.
Geige: Ссылка
%Vor%Ihre Problemumgehung:
Sie wenden die Akkordeonstile an und entfernen sie, aber nicht die Widgetinstanzen, sodass Datenereignishandler immer noch vorhanden sind. Sie müssten zumindest das jQuery('.footer-area').accordion
-Teil an einen anderen Ort verschieben, um es nur einmal auszuführen. Darüber hinaus ist das Seitenbreitenproblem nicht durch Ihre Problemumgehung gelöst.
Scrollbar Breite Funktion: Kredit Alex Mansfield ( Ссылка )
Ein Workaround entfernt und fügt die Klassen und Attribute hinzu, wenn sich die Bildschirmgröße ändert. Ich poste diesen Workaround , möchte aber eine korrekte Lösung dafür finden.
%Vor%Es gibt eine Option, die reine CSS verwendet, in der Sie die Medienanforderungen verwenden können, um sie basierend auf der Bildschirmgröße entsprechend ein- oder auszublenden:
Angenommen, Sie haben die ui-accordion-header
-Klasse in Ihren Akkordeon-Headern, wenn sie gerendert wird.
Jetzt können Sie dies in Ihr Stylesheet einfügen:
%Vor%Oder:
%Vor% Und Sie müssen keinen js
Code schreiben. Überprüfen Sie den Code hier .
Tags und Links javascript jquery accordion jquery-ui-accordion