2013-06-18 2 views
7

У меня вопрос с jQuery UI Accordion and Droppable. Как перетащить элемент из # tab-1 в # tab-2? меня посмотреть демо в jqueryui.com "Сортируемый - Соединить списки с вкладками", но я не могу использовать это для аккордеона :(Работа с jQuery UI «Accordion and Droppable»

HTML:

<div id="tabs"> 
<div id="tabs-1"> 
    <h3>A</h3> 
    <div> 
    <ul id="sortable1" class="connectedSortable ui-helper-reset"> 
     <li class="ui-state-default">Item 1</li> 
     <li class="ui-state-default">Item 2</li> 
     <li class="ui-state-default">Item 3</li> 
     <li class="ui-state-default">Item 4</li> 
     <li class="ui-state-default">Item 5</li> 
    </ul> 
    </div> 
</div> 
<div id="tabs-2"> 
    <h3>B</h3> 
    <div> 
    <ul id="sortable2" class="connectedSortable ui-helper-reset"> 
     <li class="ui-state-highlight">Item 1</li> 
     <li class="ui-state-highlight">Item 2</li> 
     <li class="ui-state-highlight">Item 3</li> 
     <li class="ui-state-highlight">Item 4</li> 
     <li class="ui-state-highlight">Item 5</li> 
    </ul> 
    </div> 
</div> 

Сценарий:

$(function() { 
    $("#sortable1, #sortable2").sortable().disableSelection(); 

    var $tabs = $("#tabs").accordion({ 
     heightStyle: "content", 
     collapsible: true, 
     header: "> div > h3", 
     beforeActivate: function(event, ui) { 
      $("#maps").width($("#tabsMap").innerWidth() - $("#mapList").width() - 34); 
     }, 
     activate: function(event, ui) { 
      $("#maps").width($("#tabsMap").innerWidth() - $("#mapList").width() - 32); 
     } 
    }).sortable({ 
     axis: "y", 
     handle: "h3", 
     stop: function(event, ui) { 
      ui.item.children("h3").triggerHandler("focusout"); 
     } 
    }); 
}); 
+0

Почему вы не можете использовать плагин jQuery UI? – rednaw

ответ

2

Вы можете подключить списки, изменив строку:

$("#sortable1, #sortable2").sortable().disableSelection(); 

To:

$("#sortable1, #sortable2").sortable({connectWith['.connectedSortable']}).disableSelection(); 

Но тогда у вас есть вопрос, как получить другую открытую бросить его в другой список.

Если вы добавите event: "mouseover" в качестве опции согласования, он не будет запускать курсор мыши, пока вы по-прежнему перетаскиваете.

Для достижения нескольких панелей открытых сразу, вам нужно довольно неприглядный обходной путь, но эй, это работает !:

http://jsfiddle.net/ZjvWN/2/

Кредит для функции beforeActivate к члену Боаз из этого ответа: jQuery UI accordion: open multiple panels at once