Scriptanpassung Kategorienmenü

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Laudatio
User
Beiträge: 2
Registriert: Dienstag 31. Mai 2022, 16:02

Guten Tag

Ich möchte auf einer Website das Kategorienmenu anders einblenden lassen. Momentan erscheint es einfach per Klick mit folgendem Code:

Code: Alles auswählen


<script language="javascript">
$("#List").click(function(){
    $('#dnn_LeftPane').toggleClass('KatMobdisplay', "slow");
});
</script>

Das Menu selbst hat folgenden Code:

Code: Alles auswählen


!function () {
var eds_category_menu = function ($) {
	var $category_menue_items = $('.edn_category_menu_wrapper li');

	$category_menue_items.click(function (e) {
		var $target = $(e.target),
			$clicked,
			$child_list,
			$expand_collapse;

		if ($target.is('div') || $target.is('a.category0')) {
			$clicked = $(this);
			$child_list = $clicked.find('> ul');
			$expand_collapse = $clicked.find('> div > a.category0');

			if ($child_list.length == 1) {
				if ($child_list.is(':visible')) {
					$child_list.slideUp(200);
					$expand_collapse.removeClass('collapse');
					$clicked.removeClass('opened');
				} else {
					$child_list.slideDown(200);
					$expand_collapse.addClass('collapse');
					$clicked.addClass('opened');
				}
			}

			return false;
		}
	});
};

if (typeof eds1_8 !== 'undefined')
	eds1_8(eds_category_menu);
else if (typeof jQuery !== 'undefined')
	jQuery(eds_category_menu);
}();

Nun möchte ich jedoch das Kategorienmenü von Links oder Rechts einsliden lassen. Leider finde ich als Anfänger mit wenig jQuery /JavaScript-Erfahrung den Rank nicht.

Danke für Eure Hilfe!
Sirius3
User
Beiträge: 18279
Registriert: Sonntag 21. Oktober 2012, 17:20

Das ist ja keine Python-Frage sondern eine Javascript-Frage, oder besser eine Frage von CSS-Animationen. Was auch das Stichwort wäre, nach dem Du suchen mußt.
Warum benutzt Du typeof um mit undefined zu vergleichen?
Warum fangen alle Deine lokalen Variablen mit $ an? Das bietet keinen Mehrwert, kann man also einfach weglassen.
Benutzeravatar
__blackjack__
User
Beiträge: 14078
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Sirius3: ``if (something !== undefined)`` funktioniert — solange niemand auf die Idee kommt `undefined` einen anderen Wert zuzuweisen. ``if (typeof something !== 'undefined')`` funktioniert auch dann noch.

Das mit dem $-Präfix machen viele um jQuery-Objekte zu kennzeichnen.

Mich stört da eher das deklarieren aller Variablen am Anfang und das auch die Werte teilweise zu früh und unnötig berechnet werden. 🤓

Code: Alles auswählen

!function () {
let eds_category_menu = function ($) {
    $('.edn_category_menu_wrapper li').click(function (element) {
        let $target = $(element.target);
        if ($target.is('div') || $target.is('a.category0')) {
            let $clicked = $(this);
            let $children = $clicked.find('> ul');
            if ($children.length == 1) {
                let $expand_collapse = $clicked.find('> div > a.category0');
                if ($children.is(':visible')) {
                    $children.slideUp(200);
                    $expand_collapse.removeClass('collapse');
                    $clicked.removeClass('opened');
                } else {
                    $children.slideDown(200);
                    $expand_collapse.addClass('collapse');
                    $clicked.addClass('opened');
                }
            }

            return false;
        }
    });
};

if (typeof eds1_8 !== 'undefined')
    eds1_8(eds_category_menu);
else if (typeof jQuery !== 'undefined')
    jQuery(eds_category_menu);
}();
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Laudatio
User
Beiträge: 2
Registriert: Dienstag 31. Mai 2022, 16:02

@__blackjack__: Wie würdest du denn so was genau scripten ohne alles "zu früh und unnötig zu berechnen" ? Als Anfänger bin ich für jeden Hinweis offen 😎
Benutzeravatar
__blackjack__
User
Beiträge: 14078
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Laudatio: Na die Sachen erst dann definieren wenn sie auch wirklich gebraucht werden. Und Deklaration und Definition nicht trennen, und ``let`` verwenden, wo das möglich ist. Habe ich doch im Beitrag als Code stehen.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten