JQuery Akkordeon, nächste und vorherige Assistenten, wie vorherige und nächste Abschnitte zu bekommen?

StackOverflow https://stackoverflow.com/questions/1418202

  •  07-07-2019
  •  | 
  •  

Frage

Ich habe ein JQuery Akkordeon, das gut funktioniert. Abschnitte erhalten erweitert / geschlossen, wenn auf entsprechenden Header geklickt. Aber ich möchte die Funktionalität hinzufügen, so dass, wenn ich auf „next“ Button öffnet den nächsten Abschnitt und „Zurück“ -Buttons führt mich zurück zur vorherigen Seite.

Dies wurde auf dieser Seite http: //jquery.bassistance .de / Akkordeon / demo /? p = 1.1.2 (letztes Beispiel), aber nicht sicher, wie ich das gleiche in meinem Fall implementieren.

Irgendwelche Vorschläge bitte.

Danke

UPDATE: Wie kann ich vorherigen oder nächsten Abschnitt des Akkordeons bekommen

<script type="text/javascript">
 $("#accordion").accordion({ 
   header: "h3.header"
   , autoHeight: false
   , collapsible: true
  });
</script>

<div id="accordion">
 <h3 class="header">Section 1</h3>
 <div> content 1 .. content 1 .. content 1 .. content 1 ..
  <input class="next" type="button" value="next"/>   
 </div>
 <h3 class="header">Section 2</h3>
 <div> content 2 .. content 2 .. content 2 .. content 2 ..
  <input class="previous" type="button" value="previous"/>
  <input class="next" type="button" value="next"/>   
 </div>
 <h3 class="header">Section 3</h3>
 <div> content 3 .. content 3 .. content 3 .. content 3 ..
  <input class="previous" type="button" value="previous"/>
 </div> 
</div>
War es hilfreich?

Lösung

Ich konnte es an die Arbeit. Geben Sie diesen einen Schuss, es funktioniert mit jQuery 1.6 und jQuery UI 1.8:

HTML:

<div id="checkout">
    <h2><a href="#">Section 1</a></h2>
    <div>
        <form action="#">
            <h3>Content</h3>
            <input type="submit" class="next" value="Continue" />
        </form>
    </div>
    <h2><a href="#">Section 2</a></h2>
    <div>
        <form action="#">
            <h3>Content</h3>
            <input type="submit" class="prev" value="Back" />
        </form>
    </div>
</div>

jQuery:

<script type="text/javascript">
    $(document).ready(function () {
        // create new accordion
        var checkout = $('#checkout').accordion({ event: false });

        // assign accordion navigation events to button clicks
        $('form', checkout).each(function (index) {
            $(this)
            .children(':submit')
            .filter('.next, .prev')
            .click(function () {
                checkout.accordion('option', 'active', index + ($(this).is('.next') ? 1 : -1));
                return false;
            });
        });
    });
</script>

Andere Tipps

Fügen Sie diese auf Ihre jQuery-Dateien. Es fügt eine Funktion $ ( "# Akkordeon"). Akkordeon ( "next") und eine Option "loopOnNext" (default false) zu zwingen, um die Top-Box zurückzukehren, wenn es am Ende ist.

$.extend($.ui.accordion.prototype, {
    next: function(){
        var index = this.option('active') || 0,
            next = index + 1,
        nodes = $(this.element).children('h3').length;
        if(next >= nodes && this.option('loopOnNext') === true) {
            next = 0;
        }

        return this.activate(next);
    }
});

Ich hatte ein ähnliches Problem und verwendet:

<button onclick="$('#accordion').accordion('activate', 0);">Prev</button>
<button onclick="$('#accordion').accordion('activate', 2);">Next</button>

auf jedem Akkordeon Bereich. Dies ist auf der zweiten Scheibe und bringt Sie zurück in dem ersten (Index von 0) oder nach vorne auf den dritten (Index von 2).

Haben Sie gerade wie in Beispiel versucht zu tun?

var wizard = $("#accordion").accordion({ 
    header: 'h3.header', 
    event: false
}); 

$("h3.header", wizard).each(function(index) { 
    $(this) 
    .next() 
    .children(":button") 
    .filter(".next, .previous") 
    .click(function() { 
        wizard.changeAccordion("activate", index + ($(this).is(".next") ? 1 : -1)) 
    }); 
});

Ich war auf der Suche nach einer Lösung für das gleiche Problem und kommen mit dieser (ich arbeite mit jQuery 1.4.2 und jQuery UI 1.8.1):

<div id="wizard">
    <h3><a href="#step1">Step 1 / 3</a></h3>
    <div id="step1">
        <button type="button">Next &raquo;</button>
    </div>
    <h3><a href="#step2">Step 2 / 3</a></h3>
    <div id="step2">
        <button type="button">Next &raquo;</button>
    </div>
    <h3><a href="#step3">Step 3 / 3</a></h3>
    <div id="step3">
        <button type="submit">Finish</button>
    </div>
</div>

Und das ist das Skript:

<script type="text/javascript">
    $(function() {

        $('#wizard').accordion();

        $('#wizard :button').each(function (index, elm) {
            $(elm).click(function() {
                $('#wizard').accordion('activate', index + 1);
            });
        });

    });
</script>

versuchen Sie dies:

var wizard = $("#register_form").accordion({
    header: '.title',
    event: 'none',
    collapsible: false
});
$(':button.previous').click(function() { wizard.accordion("activate", 0); });
$(':button.next').click(function() { wizard.accordion("activate", 1); });

Wo :button sind die Tasten PREV und NEXT, und wizard ist Ihr jQuery Akkordeon. Lassen Sie sich die anderen Code. Prüfen Sie, ob das funktioniert. Bitte hinterlassen Sie Feedback, danke.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top