Da Du ja schon einiges selbst hinbekommen hast mal nur ein Link
http://docs.jquery.com/Attributes/attr#name
Hallo,
beschäftige mich erst seit ganz kurzer Zeit mit JQuery, benötige aber für ein Projekt folgende Funktion:
Per Klick auf einen Link in einer Linkliste soll der INhalt eines Div-Containers per AJAX ausgetauscht werden (mit der entsprechenden URL).
Hier mal eine rudimentäre Version des HTML:
Die URL müsste also aus den Links ausgelesen und die entsprechende Seite in #inhalt geladen werden.HTML-Code:<div id="inhalt"> <p>Der Inhalt des Divs soll verändert werden</p> </div> <ul> <li><a href="seite1.html">Seite 1</a></li> <li><a href="seite2.html">Seite 2</a></li> <li><a href="seite3.html">Seite 3</a></li> . . . </ul>
Ich habe es mit $.ajax zwar schon hingekriegt, das ein neuer Inhalt geladen wird, aber wie schaffe ich es, das href-Attribut auszulesen?
(Wenn das ganze noch mit einem Fadeout/FadeIn-Effekt passiert, wäre das das Sahnehäubchen).
Vielleicht kann mir jemand einen Tipp geben.
Da Du ja schon einiges selbst hinbekommen hast mal nur ein Link
http://docs.jquery.com/Attributes/attr#name
Grüße vom Griechen,
Cybergreek!
everygain Translator - eine Firefox-Erweiterung, damit der Grieche Euch besser versteht
the0bone
Wissen ist Macht, nichts Wissen macht nichts! Doch auch auch wenn man es nicht besser weiss, sollte man beim Erstellen einer Webseite auf Frames und Tabellen verzichten.
----------
follow TP
Okay, danke für die Links. Ein Problem noch:
wie kann ich an die Funktion zum laden des neuen Inhalts die URL des angeklickten Links übergeben?
Denn ich würde es gerne als normale Liste mit "echten" Links machen, damit die Seite auch ohne Javascript zumindest "normal" geöffnet werden würden.
Grüße vom Griechen,
Cybergreek!
everygain Translator - eine Firefox-Erweiterung, damit der Grieche Euch besser versteht
Aber dafür müsste ich doch jedem Link eine eindeutige ID geben, oder?
Gibt es nicht eine universellere Möglichkeit, so daß ich bei einer Erweiterung der Liste nicht den JQuery-Code anpassen müsste?
Ja gibt es... jquery kann den href auslesen und nutzen... schaff ich aber heute nicht mehr!
:-D
the0bone
Wissen ist Macht, nichts Wissen macht nichts! Doch auch auch wenn man es nicht besser weiss, sollte man beim Erstellen einer Webseite auf Frames und Tabellen verzichten.
----------
follow TP
Hab's hinbekommen, und sogar so, dass die Navi bei deaktiviertem Javascript trotzdem funzt.
Für alle, die's interessiert:
Weiss nicht, ob das die perfekte Lösung ist, aber sie funktioniert. Bin aber trotzdem für Verbesserungsvorschläge offen!HTML-Code:<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Liste-Navi</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript" src="jquery-1.3.2.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ // Innerhalb der Liste href auslesen und durch # ersetzen, title-Attribut mit dem Wert des href schreiben $("ul.liste a").each(function(){ var url = $(this).attr("href"); $(this).attr("title",url).attr("href","#"); }); // per Click entsprechende URL in das DIV laden, aber nur das DIV #seiteninhalt $("ul.liste a").click(function(){ var quelle = $(this).attr("title") + " #seiteninhalt"; $("#container").load(quelle); }); }); </script> <style type="text/css"> #container { width: 400px; height: 300px; border: 1px solid #ccc; padding: 1em; } </style> </head> <body> <div id="container"> Zu ersetzender Inhalt </div> <ul class="liste"> <li><a href="seite1.html">Seite 1</a></li> <li><a href="seite2.html">Seite 2</a></li> <li><a href="seite3.html">Seite 3</a></li> <li><a href="seite4.html">Seite 4</a></li> <li><a href="seite5.html">Seite 5</a></li> </ul> </body> </html>![]()
Genau so hatte ich mir das gedacht. jquery das Dokument durchsuchen lassen und einfach die href Ziele überschreiben. :-)
the0bone
Wissen ist Macht, nichts Wissen macht nichts! Doch auch auch wenn man es nicht besser weiss, sollte man beim Erstellen einer Webseite auf Frames und Tabellen verzichten.
----------
follow TP
Hm, kann ich das ganze jetzt noch irgendwie so umbauen, dass das DIV erst ausgefadet und wenn der Inhalt geladen ist, wieder eingefadet wird?
sicher. Vor load ausfaden, load hat die callback - Funktion, wo Du wieder einblenden kannst
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
also sowas sollte gehen:
Code:$("#container").fadeOut(1000); $("#container").load(quelle, {}, function() { $("#container").fadeIn(1000); });
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
Hi,
damit funzt zwar das faden, aber man sieht den neuen Inhalt schon, bevor #container ausgeblendet wird.
dann musst Du eine pause einbauen, z.B. wie hier:
http://www.learningjquery.com/2007/0...ct-delay-trick
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
Okay, soweit funzt alles. Jetzt das nächste Problem:
der einzubindende Code enthält auch einen Javascript-Block. Dieser wird nicht eingebunden. Ist das überhaupt möglich? Das restliche HTML erscheint wie gewünscht.
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)