Seite 1 von 1

Scriptanpassung Kategorienmenü

Verfasst: Dienstag 31. Mai 2022, 16:08
von Laudatio
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!

Re: Scriptanpassung Kategorienmenü

Verfasst: Donnerstag 2. Juni 2022, 07:54
von Sirius3
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.

Re: Scriptanpassung Kategorienmenü

Verfasst: Donnerstag 2. Juni 2022, 09:49
von __blackjack__
@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);
}();

Re: Scriptanpassung Kategorienmenü

Verfasst: Donnerstag 2. Juni 2022, 10:28
von Laudatio
@__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 😎

Re: Scriptanpassung Kategorienmenü

Verfasst: Donnerstag 2. Juni 2022, 10:37
von __blackjack__
@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.