Jquery accordéon, assistant suivant et précédent, comment obtenir les sections précédentes et suivantes?

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

  •  07-07-2019
  •  | 
  •  

Question

J'ai un accordéon Jquery qui fonctionne bien. Les sections sont développées / réduites lorsque vous cliquez sur les en-têtes respectifs. Mais je souhaite ajouter la fonctionnalité de sorte que lorsque je clique sur "Suivant". bouton ouvre la section suivante et clique sur " Précédent " bouton me ramène à la section précédente.

Cela a été fait sur cette page http: //jquery.bassistance .de / accordéon / demo /? p = 1.1.2 (dernier exemple), mais je ne sais pas comment je vais appliquer la même chose dans mon cas.

Toutes les suggestions s'il vous plaît.

Merci

UPDATE: Comment obtenir la section précédente ou suivante de l'accordéon?

<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>
Était-ce utile?

La solution

J'ai pu le faire fonctionner. Donnez un coup de feu, cela fonctionne avec jQuery 1.6 et 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>

Autres conseils

Ajoutez ceci à vos fichiers jQuery. Il ajoute une fonction $ ("# accordéon"). Accordéon ("suivant") et une option, "loopOnNext". (valeur par défaut, false) pour le forcer à revenir au premier plan à la fin.

$.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);
    }
});

J'ai eu un problème similaire et utilisé:

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

sur chaque volet accordéon. Il s’agit du deuxième volet et vous ramène au premier (index de 0) ou au troisième (index de 2).

Avez-vous essayé de faire comme dans l'exemple?

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)) 
    }); 
});

Je cherchais une solution au même problème et je l'ai trouvé (je travaille avec jQuery 1.4.2 et 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>

Et voici le script:

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

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

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

    });
</script>

essayez ceci:

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); });

: bouton sont les boutons précédent et suivant, et assistant est votre accordéon jQuery. Laissez tous les autres codes. Voir si cela fonctionne. S'il vous plaît laissez des commentaires, merci.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top