1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

[jQuery] Funktion geht mit id-Selektor, aber nicht mit class-Selektor

Dieses Thema im Forum "Design" wurde erstellt von Evil-Rabbit, 29. Juni 2010.

  1. Evil-Rabbit

    Evil-Rabbit New Member

    Registriert seit:
    29. Juni 2010
    Beiträge:
    4
    Zustimmungen:
    0
    Hallo,
    ich hoffe ich bin hier im richtigen Forum, aber hier waren ja schon Themen mit ähnlichen Anliegen.
    Meins:
    Ich habe auf einer Seite in Wordpress einen Link, bei dessen Anklicken ein Text mit mehr Informationen per jQuery slideToggle eingeblendet werden soll. Dazu habe ich eine Funktion geschrieben, die aufgerufen wird und das funktioniert auch.
    Nun möchte ich aber auch, dass sich der Textlink von "mehr..." in "weniger..." verändert. Dazu habe ich eine weitere Funktion geschrieben. Diese funktioniert jedoch nur, wenn ich die gewünschten spans mit # selektiere. Ändere ich alle IDs in Klassen, damit ich die Funktion mehrmals und an verschiedenen Stellen benutzen kann, dann funktioniert es nicht.

    Ich habe diese beiden Funktionen in einem externen js-File, welches ich über den HTML-Header-Insert im Atahualpa-Theme in den Header wie folg einbinde:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Diese Datei sieht dann so aus:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Wenn in der zweiten Funktion alle "." in "#" und alle "class" in "id" geändert werden und mein Link so aussieht:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    dann geht es bei diesem ersten Link einwandfrei, aber logischerweise bei keinem anderen.
    Hab ich jedoch den Link so:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    und die Funktion wie oben angegeben. Dann funktioniert nur der slideToggle, sonst nichts.

    Überseh ich irgendwas oder denke falsch??
     
  2. Ammaletu

    Ammaletu Well-Known Member
    Ehrenmitglied

    Registriert seit:
    14. Juli 2007
    Beiträge:
    4.696
    Zustimmungen:
    0
    Probier es mal so. Die globale Variable stat kann auf jeden Fall weg, das kann mit mehreren Links ja nicht gehen (die klappen ja nicht alle gleichzeitig auf, oder?). Das innere span kann auch weg, es sei denn es erfüllt noch vom Design her einen dringend nötigen Zweck.

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    HTML also so:

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  3. Evil-Rabbit

    Evil-Rabbit New Member

    Registriert seit:
    29. Juni 2010
    Beiträge:
    4
    Zustimmungen:
    0
    Funktioniert leider auch nicht. Mit dem title-Tag hatte ich es schon probiert, war auch mein Anfangsgedanke, jedoch funktioniert das seltsamerweise auch nicht, weil jQuery höchstwahrscheinlich nicht auf das aktualisierte DOM zugreift nach dem Aufruf.
    Jedoch hatte es bei mir zumindest einmal funktioniert, jetzt funktioniert es gar nicht. Da hatte ich das Script aber noch direkt mit im html-Quelltext gehabt.

    Was mich auch noch wundert ist, dass wenn ich irgendwo im Script ein alert() einbaue, um mir eine Variable testweise ausgeben zu lassen, dieses auch nie funktioniert...

    :confused:
     
  4. Ammaletu

    Ammaletu Well-Known Member
    Ehrenmitglied

    Registriert seit:
    14. Juli 2007
    Beiträge:
    4.696
    Zustimmungen:
    0
    Hm, ne, daran kann es nicht liegen. Erstens lese ich das title-Attribut in obigem Code gar nicht über jQuery aus und zweitens ist jQuery ja genau dafür da.


    Dann würde ich im Moment mal drauf tippen, dass irgendwo vorher ein JavaScript-Fehler passiert und die Script-Bearbeitung abgebrochen wird. Kann das sein? Zeigt der Browser irgendwelche Fehler an? Hast Du bei den Alerts übrigens die Seite mal ohne Cache neugeladen (Strg+F5)? Nicht dass der Browser nur die alte Version gecacht hat.
     
    #4 Ammaletu, 29. Juni 2010
    Zuletzt bearbeitet: 30. Juni 2010
  5. Evil-Rabbit

    Evil-Rabbit New Member

    Registriert seit:
    29. Juni 2010
    Beiträge:
    4
    Zustimmungen:
    0
    Es zeigt eben in der Fehlerkonsole keinen Fehler an und das Auf- und Zuklappen funktioniert auch weiterhin.
    Hab es auch eigentlich immer mit mehrmaligem Neuladen probiert. Jetzt nicht direkt mit Strg+F5 aber eben aktualisiert. Der Quelltext hat sich ja auch immer so verändert, wie ich ihn bearbeitet hab in WP und bei verschiedenen Tests kam es ja bei gleichem Vorgehen auch vor, das mal nichts funktionierte.
     
  6. Ammaletu

    Ammaletu Well-Known Member
    Ehrenmitglied

    Registriert seit:
    14. Juli 2007
    Beiträge:
    4.696
    Zustimmungen:
    0
    Tja... Mit alert() solltest Du auf jeden Fall sehen können, was im Script passiert. Bei jQuery ist ja eine beliebte Fehlerursache auch, dass die Selektoren nicht stimmen, vielleicht liegt es daran.

    Wenn ich da weiter helfen soll, müssten wir mal schauen, wie ich mir das am lebenden Objekt anschauen kann. Entweder auf Deiner Seite oder Du speicherst mal eine Testseite als HTML ab und schickst mir das gezippt (Mail-Addy siehe mein Blog). So nur am Code rumzuprobieren macht das unnötig schwierig, wenn man es mit Firebug in wenigen Minuten klären könnte. :)
     
  7. Evil-Rabbit

    Evil-Rabbit New Member

    Registriert seit:
    29. Juni 2010
    Beiträge:
    4
    Zustimmungen:
    0
    Also ich hab es jetzt hinbekommen.
    Zuerst hab ich das Javascript im Footer statt im Header included und zwar ganz normal mit
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Jenes sieht jetzt so aus:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Und es funktioniert tatsächlich nur mit den zwei spans ineinander. Wenn ich die Funktion nur mit dem inneren span aufrufe, wo es sich quasi selbst ersetzt, dann geht er beim zweiten Klick (warum auch immer) gar nicht in die Funktion rein (habs mit alert() getestet, denn das funktionierte jetzt auch). Jedenfalls funktionert es jetzt, dass die Wörter ausgetauscht werden.

    Vielen Dank für deine Hilfe!
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden