Ich habe eine Liste auf meiner Website erstellt. Diese Liste wird von einer foreach-Schleife erstellt, die mit Informationen aus meiner Datenbank erstellt wird. Jedes Element ist ein Container mit unterschiedlichen Abschnitten, daher ist dies keine Liste wie 1, 2, 3 ... usw. Ich liste sich wiederholende Abschnitte mit Informationen auf. In jedem Abschnitt gibt es einen Unterabschnitt. Der allgemeine Build lautet wie folgt:
<div>
<fieldset class="majorpoints" onclick="majorpointsexpand($(this).find('legend').innerHTML)">
<legend class="majorpointslegend">Expand</legend>
<div style="display:none" >
<ul>
<li></li>
<li></li>
</ul>
</div>
</div>
Ich versuche also, eine Funktion mit onclick = "majorpointsexpand ($ (this) .find ('legend'). InnerHTML)" aufzurufen.
Das Div, das ich zu manipulieren versuche, ist standardmäßig style = "display: none", und ich möchte Javascript verwenden, um es beim Klicken sichtbar zu machen.
Das "$ (this) .find ('legend'). InnerHTML" versucht, in diesem Fall "Expand" als Argument in der Funktion zu übergeben.
Hier ist das Javascript:
function majorpointsexpand(expand)
{
if (expand == "Expand")
{
document.write.$(this).find('div').style = "display:inherit";
document.write.$(this).find('legend').innerHTML = "Collapse";
}
else
{
document.write.$(this).find('div').style = "display:none";
document.write.$(this).find('legend').innerHTML = "Expand";
}
}
Ich bin mir fast zu 100% sicher, dass mein Problem die Syntax ist, und ich habe nicht viel Verständnis dafür, wie Javascript funktioniert.
Ich habe jQuery mit dem Dokument verknüpft mit:
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
In der <head></head>
Sektion.
quelle
$(this)
. Hoffe das hilft.Antworten:
Okay, Sie haben hier zwei Möglichkeiten:
fieldset
(es ist ohnehin nicht semantisch richtig, es dafür zu verwenden) und selbst eine Struktur erstellen.So machen Sie das. Erstellen Sie eine HTML-Struktur wie folgt:
Mit diesem CSS: (Dies dient zum Ausblenden des
.content
Materials beim Laden der Seite.Schreiben Sie dann mit jQuery ein
click
Ereignis für den Header.Hier ist eine Demo: http://jsfiddle.net/hungerpain/eK8X5/7/
quelle
wie wäre es mit:
jQuery:
HTML
Geige
Auf diese Weise binden Sie das Klickereignis an die
.majorpoints
Klasse und müssen es nicht jedes Mal in den HTML-Code schreiben.quelle
Zunächst einmal verwendet Ihr Javascript nicht einmal jQuery. Es gibt verschiedene Möglichkeiten, dies zu tun. Beispielsweise:
Erster Weg mit der jQuery-
toggle
Methode:jsFiddle: http://jsfiddle.net/pM3DF/
Eine andere Möglichkeit besteht darin, einfach die jQuery-
show
Methode zu verwenden:jsFiddle: http://jsfiddle.net/Q2wfM/
Ein dritter Weg ist die Verwendung der
slideToggle
Methode von jQuery, die einige Effekte zulässt. So$('#showMe').slideToggle('slow');
wird langsam das versteckte Div angezeigt.quelle
<li>
Elementen zu erstellen , nicht in Divs. In beiden Fällen konnte er die Element-ID nur verwenden, um sie auszublenden.Viele Probleme hier
Ich habe eine Geige eingerichtet, die für Sie funktioniert: http://jsfiddle.net/w9kSU/
quelle
Vielleicht möchten Sie einen Blick auf diese einfache Javascript-Methode werfen, die aufgerufen wird, wenn Sie auf einen Link klicken, um ein Panel / Div zu erweitern oder zu reduzieren.
Sie können die Div-ID übergeben und zwischen Anzeige 'keine' oder 'Block' umschalten.
Originalquelle auf snip2code - So reduzieren Sie ein Div in HTML
quelle
versuchen Sie es mit jquery,
quelle
Hier gibt es mein Beispiel für eine Animation einer Mitarbeiterliste mit einer Beschreibung erweitern.
Geige
quelle
Schauen Sie sich die
toggle()
jQuery- Funktion an:http://api.jquery.com/toggle/
Auch
innerHTML
jQuery- Funktion ist.html()
.quelle
Da Sie jQuery auf der Seite haben, können Sie dieses
onclick
Attribut und diemajorpointsexpand
Funktion entfernen . Fügen Sie das folgende Skript am Ende Ihrer Seite oder vorzugsweise einer externen JS-Datei hinzu:Diese Lösung sollte so wie sie ist mit Ihrem HTML funktionieren, ist aber keine wirklich robuste Antwort. Wenn Sie Ihr
fieldset
Layout ändern , kann es beschädigt werden. Ich würde vorschlagen, dass Sie einclass
Attribut in dieses versteckte Divclass="majorpointsdetail"
einfügen und stattdessen diesen Code verwenden:Obs:
</fieldset>
Ihre Frage enthält kein schließendes Tag, daher gehe ich davon aus, dass sich das versteckte Div innerhalb des Feldsatzes befindet.quelle
Wenn Sie die zusammenlegbare Datenrolle verwendet haben, z
dann wird das erweiterte div geschlossen
quelle
Schauen Sie sich Jed Fosters Readmore.js Bibliothek an.
Die Verwendung ist so einfach wie:
Hier sind die verfügbaren Optionen zum Konfigurieren Ihres Widgets:
Verwendung kann es wie folgt verwenden:
Ich hoffe, es hilft.
quelle