2010-09-29 16 views
0

我想在JQuery UI中有类似于可排序的手风琴,它可以自动排序,即活动的手风琴面板(打开的 - 最后一次点击)自动移动到手风琴的顶部。JQuery UI可自动排序的Accordian - 这可能吗?

任何想法?

这里的链接到JQ UI页面:http://jqueryui.com/demos/accordion/#sortable

谢谢!

这里是我(在回复托马斯)代码:

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

}); 

回答

1

这个代码添加到演示的例子:

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

编辑:

代码的修改:

$(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

嗨托马斯!感谢您的回复。我已经用我的代码更新了我的帖子,不确定是否正确 - 我的js不是很好。我在Firebug控制台中出现这个错误'丢失:在属性ID后 [打破这个错误]功能(事件,用户界面){\ n'和手风琴坏了? – Robimp 2010-09-29 14:19:09

+0

不知道您是否在编辑的答案中收到通知,所以我发布此评论以通知您。 – Thomas 2010-09-29 14:49:06

+0

美丽!现在完美的工作,并感谢通知,我在这里拉我的头发试图弄清楚。我真的必须在JavaScript中变得更好。 – Robimp 2010-09-29 15:04:36

2

I意识到这是一个较老的线索,但我发现,将“更改”更改为“changestart”会导致幻灯片在排序发生后发生,这在我看来看起来更好。

如果你愿意为我做的有滑走位的排序有后,你可以改变这一点:

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

要这样:

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

它添加到jQuery UI的手风琴排序演示和标题点击会A.立即排序自己的顶部,并B.幻灯片打开。