boykottke
Mitglied
Hallo Leute,
ich habe in den letzten Tagen versucht, mit jQuery ein mobiles Menü zu verwirklichen. Der Grundgedanke:
Ich habe einen Seitenbaum bestehend aus verschachtelten Listen. Lediglich der aktive Menüteil soll eingeblendet sein. (Also die Unterliste, in der sich der Link der aktiven Seite befindet)
Ich habe nun ein Script geschrieben, mit dem der Nutzer durch das Menü navigieren kann. Das sieht folgendermaßen aus:
Der Code oben funktioniert wunderbar und macht, was er soll. Jedoch wollte ich nun anfangen, redundanten Code in eigene Funktionen abzulegen. Schließlich wird im ersten Teil fast das gleiche gemacht, wie in den Aufrufen der entsprechenden Links.
Nun, kurz und gut: ab diesem Moment haut es nicht mehr hin.
Während
ohne Probleme funktioniert, bekomme ich, wenn ich eine Funktion wie diese
einrichte, den Fehler "checkUlNext is not defined". Auch
bringt das gleiche Ergebnis. Es geht nicht. Jetzt muss ich ehrlich fragenm: Wo liegt mein Denkfehler beim Schreiben der Funktion? Warum will das Ganze nicht?
Für Eure Hilfe wäre ich sehr dankbar.
ich habe in den letzten Tagen versucht, mit jQuery ein mobiles Menü zu verwirklichen. Der Grundgedanke:
Ich habe einen Seitenbaum bestehend aus verschachtelten Listen. Lediglich der aktive Menüteil soll eingeblendet sein. (Also die Unterliste, in der sich der Link der aktiven Seite befindet)
Ich habe nun ein Script geschrieben, mit dem der Nutzer durch das Menü navigieren kann. Das sieht folgendermaßen aus:
Code:
<script type="text/javascript">
$(document).ready(function() {
var tdwrapper = ".td-mobimenu";
var tdrootline = "#td-mobimenu-root";
var tdbrowse = ".td-mobimenu-browse";
var tdback = ".td-mobimenu-back";
var tdcurrent = ".current";
var tdactive = ".active";
$.fn.checkUl = function() {
return "#" + $(this).closest("ul").get(0).id;
}
if($(tdcurrent).length > 0) {
currentTarget = $(tdcurrent).checkUl();
} else if($(tdactive).length > 0) {
currentTarget = $(tdactive).checkUl();
} else {
currentTarget = tdrootline;
}
$("a" + tdback).attr('rel', currentTarget);
$(tdwrapper + " ul li").hide();
$(tdwrapper + " ul" + currentTarget +" li").not(tdwrapper + " ul" + currentTarget + " ul li").show();
if (currentTarget == tdrootline) { $("a" + tdback).hide() } else {$("a" + tdback).show()}
$("a" + tdbrowse ).click(function(){
var isTarget = $(this).attr("rel");
$(tdwrapper + " ul li").hide();
$(tdwrapper + " ul" + isTarget + " li").not( tdwrapper +" ul" + isTarget + " ul li").show();
$("a" + tdback).attr('rel', isTarget);
if (isTarget == tdrootline) { $("a" + tdback ).hide() } else {$("a" + tdback).show()}
});
$("a" + tdback).click(function(){
var isTarget = $(this).attr("rel");
var parentTarget = "#" + jQuery("ul" + isTarget).closest("ul:not("+isTarget+")").get(0).id;
$(tdwrapper + " ul li").hide();
$(tdwrapper + " ul" + parentTarget + " li").not(tdwrapper + " ul" + parentTarget + " ul li").show();
$("a" + tdback).attr('rel', parentTarget);
if (parentTarget == tdrootline) { $("a" + tdback).hide() } else {$("a" + tdback).show()}
});
});
</script>
Der Code oben funktioniert wunderbar und macht, was er soll. Jedoch wollte ich nun anfangen, redundanten Code in eigene Funktionen abzulegen. Schließlich wird im ersten Teil fast das gleiche gemacht, wie in den Aufrufen der entsprechenden Links.
Nun, kurz und gut: ab diesem Moment haut es nicht mehr hin.
Während
Code:
var isTarget = $(this).attr("rel");
var parentTarget = "#" + jQuery("ul" + isTarget).closest("ul:not("+isTarget+")").get(0).id;
ohne Probleme funktioniert, bekomme ich, wenn ich eine Funktion wie diese
Code:
$.fn.checkUlNext = function() {
return "#" + $(this).closest("ul").not("ul" + this ).get(0).id;
}
/*---- Aufruf über-----*/
parentTarget = $(isTarget).checkUlNext();
einrichte, den Fehler "checkUlNext is not defined". Auch
Code:
$.fn.checkUlNext = function() {
var i = this;
return "#" + $(i).closest("ul").not("ul" + i ).get(0).id;
}
/*---- Aufruf über-----*/
parentTarget = $(isTarget).checkUlNext();
bringt das gleiche Ergebnis. Es geht nicht. Jetzt muss ich ehrlich fragenm: Wo liegt mein Denkfehler beim Schreiben der Funktion? Warum will das Ganze nicht?
Für Eure Hilfe wäre ich sehr dankbar.