2010-09-29 6 views
0

Je souhaite avoir quelque chose de similaire à l'accordian triable dans JQuery UI, qui se trie automatiquement, c'est-à-dire que le panneau d'accordéon actif (le dernier ouvert) se déplace automatiquement vers le haut de l'accordéon.JQuery UI Auto-Sortable Accordian - est-ce possible?

Des idées?

Voici le lien vers la page de l'interface utilisateur JQ: http://jqueryui.com/demos/accordion/#sortable

Merci!

Voici le code que j'ai (en réponse à Thomas):

$(function() { 
    var stop = false; 
    $("#ccaccordion h3").click(function(event) { 
     if (stop) { 
      event.stopImmediatePropagation(); 
      event.preventDefault(); 
      stop = false; 
     } 
    }); 

    $("#ccaccordion") 
     .accordion({ 
      header: "> div > h3", 
      autoHeight: false, 
      "option", 
      "change", 
      function(event, ui){ 
       ui.newHeader.parent().prependTo(this); 
      } 
     }) 
     .sortable({ 
      axis: "y", 
      handle: "h3", 
      stop: function() { 
       stop = true; 
      } 
     }); 

}); 

Répondre

1

Ajouter ce code à l'exemple de démonstration:

$('#accordion') 
    .accordion(
    'option', 
    'change', 
    function(event, ui){ 
     ui.newHeader.parent().prependTo(this); 
    } 
); 

Edit:

Modification de votre code:

$(function() { 
    var stop = false; 
    $("#ccaccordion h3").click(function(event) { 
     if (stop) { 
      event.stopImmediatePropagation(); 
      event.preventDefault(); 
      stop = false; 
     } 
    }); 

    $("#ccaccordion") 
     .accordion({ 
      header: "> div > h3", 
      autoHeight: false, 
      change: 
       function(event, ui){ 
       ui.newHeader.parent().prependTo(this); 
       } 
     }) 
     .sortable({ 
      axis: "y", 
      handle: "h3", 
      stop: function() { 
       stop = true; 
      } 
     }); 

}); 
+0

Bonjour Thomas! Merci pour votre réponse. J'ai mis à jour mon message avec le code que j'ai, je ne sais pas si c'est correct - mon js n'est pas si génial. Je reçois cette erreur dans la console de Firebug 'manquant: après l'ID de propriété [Break on this error] (évènement, ui) {\ n' et l'accordéon est cassé? – Robimp

+0

Vous ne savez pas si vous recevez une notification sur ma réponse modifiée, alors je publie ce commentaire pour vous en informer. – Thomas

+0

Magnifique! Cela fonctionne parfaitement maintenant, et merci pour la notification, je tirais mes cheveux ici en essayant de comprendre. Je dois vraiment aller mieux à javascript. – Robimp

2

I Je me suis rendu compte qu'il s'agit d'un sujet plus ancien, mais j'ai découvert que changer de 'changement' en 'changestart' provoquait le glissement après que le tri ait eu lieu, ce qui semble beaucoup mieux à mon avis.

Si vous préférez que je faire pour avoir la place de prendre diaporama après le tri a, vous pouvez le modifier:

$('#accordion') 
    .accordion(
     'option', 
     'change', 
    function(event, ui){ 
     ui.newHeader.parent().prependTo(this); 
    } 
); 

à ceci:

$('#accordion') 
    .accordion(
     'option', 
     'changestart', 
    function(event, ui){ 
     ui.newHeader.parent().prependTo(this); 
    } 
); 

Ajoutez ceci à l'interface utilisateur jQuery Accordéon trier la démo et le titre cliqué va A. immédiatement se trier tout en haut, et B. glisser ouvert.