Jquery UI Accordion获得可排序的ID

时间:2013-06-30 20:57:45

标签: jquery jquery-ui

这与jquery

上看到的基本相同

以下是该版本的小提琴:http://jsfiddle.net/DHCaA/

我想做的很简单。例如(使用那个小提琴)如果我移动第2部分下面的第1部分,我怎样才能获得切换位置的部分的ID。我需要那些ID,所以我可以对我的模型进行一些计算和更改。

手风琴中的每个元素都是动态创建的,我可以创造任何我想要的东西。例如:

<div id ="first-1" class="group">

这是带有ID的第一个条目。

任何想法?

3 个答案:

答案 0 :(得分:2)

function current_order(el){
    var order=[];
    el.children().each( function(i){      
              order[i]=this.id;
    });
    // silly test      
    for(var i=0; i<order.length; i++){
       console.log("got " + order[i]);
   }
}

//添加到手风琴停止方法

stop: function( event, ui ) {
      // IE doesn't register the blur when sorting
      // so trigger focusout handlers to remove .ui-state-focus
      ui.item.children( "h3" ).triggerHandler( "focusout" );

      current_order($(this));

    }

答案 1 :(得分:2)

您可以存储元素的原始索引(例如,通过data()),并在排序后比较存储的索引和当前索引(当它们不相等时,位置已更改)。之后更新存储的索引。

$( "#accordion" )
      .accordion({
        header: "> div > h3",
        collapsible: true
      })
      .sortable({
        axis: "y",
        handle: "h3",
        stop: function( event, ui ) {
        var items=[];
        ui.item.siblings().andSelf().each(function(){
            //compare data('index') and the real index
            if($(this).data('index')!=$(this).index()){
              items.push(this.id);
            }
          });
          // IE doesn't register the blur when sorting
          // so trigger focusout handlers to remove .ui-state-focus
          ui.item.children( "h3" ).triggerHandler( "focusout" );
          if(items.length)alert(items.join(','));
          ui.item.parent().trigger('stop');
        }
      }).on('stop',function(){
        $(this).children().each(function(i){$(this).data('index',i)});
      }).trigger('stop');

http://jsfiddle.net/DHCaA/2/

答案 2 :(得分:0)

看看这个:

.sortable({
    axis: "y",
    handle: "h3",
    stop: function( event, ui ) {
        var items=[];
        ui.item.siblings().andSelf().each( function(){
            //compare data('index') and the real index
            if($(this).data('index')!=$(this).index()){
                items.push(this.id);
            }
        });
        // IE doesn't register the blur when sorting
        // so trigger focusout handlers to remove .ui-state-focus
        ui.item.children( "h3" ).triggerHandler( "focusout" );
        **if(items.length) $("#sequence").text(items.join(','));**
        ui.item.parent().trigger('stop');
    } 
})

在手风琴下方,我用

列出了序列
<div>
    Sequence:  <span id="sequence"> This is the sequence of the elements.</span>
</div>