JQuery UI Auto-Sortable Accordion - 这可能吗?

时间:2010-09-29 12:38:01

标签: jquery jquery-ui jquery-ui-accordion

我希望在JQuery UI中有类似于可排序的手风琴,它会自动排序,即活动的手风琴面板(打开的 - 最后一个单击)会自动移动到手风琴的顶部。

有什么想法吗?

以下是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;
            }
        });

});

2 个答案:

答案 0 :(得分:2)

我意识到这是一个较旧的主题,但我发现将'change'更改为'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 Accordion排序演示中,单击的标题将为A.立即将自己排序到顶部,然后B.滑动打开。

答案 1 :(得分: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;
            }
        });

});