2013-06-18 14 views
7

Mam pytanie z jQuery UI Accordion i Droppable. Jak przeciągnąć element z # karty-1 do # karty-2? muszę zobaczyć demo jqueryui.com "Sortable - Podłączyć list z kartami", ale nie mogę użyć tego na akordeon :(Praca z jQuery UI "Akordeon i 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> 

Scenariusz:

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

Dlaczego nie możesz użyć wtyczki jQuery UI? – rednaw

Odpowiedz

2

można podłączyć list zmieniając linię:

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

Do:

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

Ale wtedy masz problem, jak zdobyć drugą otwartą upuścić go do innej listy.

Jeśli dodasz event: "mouseover" jako opcję akordeonu, nie spowoduje to przesunięcia kursora myszy w czasie, gdy nadal będziesz przeciągać.

Aby osiągnąć wiele paneli otwartych na raz, trzeba raczej brzydki obejście, ale hej, to działa !:

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

punktów dla funkcji beforeActivate do państw Boaz z tej odpowiedzi: jQuery UI accordion: open multiple panels at once

Powiązane problemy