2013-02-16 15 views
9

Ich habe zwei Registerkarten (mit Boost-Funktion erstellt) und jede Registerkarte hat ihre eigene Tabelle.Ziehen Sie die Tabellenzeile aus einer Tabstopp-Tabelle in eine andere Tabstopp-Tabelle - Jquery

Ich muss Tabellenzeile von einer Registerkarte ziehen und in eine andere Tabs-Tabelle fallen. Während des Ziehens möchte ich die Registerkarte unter dem Cursor öffnen, bevor ich in die Tabelle blättere. Jede Hilfe wird geschätzt.

Das ist mein HTML-Code

<div class="tabbable" > 
    <ul class="nav nav-tabs" id="my-tabs"> 
    <li class="active"><a href="#tab1" data-toggle="tab"> Tab1 </a></li> 
    <li class=""><a href="#tab2" data-toggle="tab"> Tab2 </a></li> 
</ul> 
</div> 

<div class="tab-content"> 
<div class="tab-pane active" id="tab1"> 
    <table id='table-draggable1'> 
    <thead> 
    <th>col1</th> 
    <th>col2</th> 
    <th>col3</th> 
    <th>col4</th> 
    </thead> 
<tbody> 
    <tr> 
    <td>256</td>                       
    <td>668</td>                
    <td>100.95</td> 
    <td>1.82</td>                 
    </tr> 
    <tr> 
    <td>256</td>                       
    <td>668</td>                
    <td>100.95</td> 
    <td>1.82</td>                 
    </tr> 
</tbody> 
</table> 
<div class="tab-pane" id="tab2"> 
    <table id='table-draggable2'> 
    <thead> 
    <th>col1</th> 
    <th>col2</th> 
    <th>col3</th> 
    <th>col4</th> 
    </thead> 
<tbody> 
    <tr> 
    <td>256</td>                       
    <td>668</td>                
    <td>100.95</td> 
    <td>1.82</td>                 
    </tr> 
    <tr> 
    <td>256</td>                       
    <td>668</td>                
    <td>100.95</td> 
    <td>1.82</td>                 
    </tr> 
</tbody> 
</table> 

</div> 

Das ist mein JS-Code ist

$('.table-draggable1 tbody').draggable(); 

$('#my-tabs > li').droppable({ 
    over:function(event, ui){    
    console.log(event.target);    
}, 
    drop:function(event,ui){    
}  
}); 
+0

Bit zu breit für diese Seite. aber im Grunde müßten Sie erkennen, wenn das gezogene Objekt "über" einer Registerkarte ist, diese Registerkarte öffnen usw. und zusätzlich die dom-Operationen, um das Einfügen des gezogenen Objekts in den Dom-Zweig der neuen Position richtig zu handhaben. –

+0

Ich habe versucht, Registerkarte während des Ziehens zu öffnen, aber ich konnte nicht –

+0

Derzeit ist dies die http://jsfiddle.net/xuWCm/ Geige basierend auf Ihrem Code, aber die zweite Registerkarte nicht geöffnet, wenn angeklickt. Sind Sie sicher, dass dieser Code alles enthält? da auch 'var widthFixHelper' nirgends referenziert wird. –

Antwort

23

Hier ist eine Lösung, die jQueryUI abwerfbaren mit sortierbar verbindet Ihre Anforderung zu erfüllen:

$(document).ready(function() { 
    $tabs = $(".tabbable"); 
    $('.nav-tabs a').click(function(e) { 
     e.preventDefault(); 
     $(this).tab('show'); 
    }) 

    $("tbody.connectedSortable").sortable({ 
     connectWith: ".connectedSortable", 
     items: "> tr:not(:first)", 
     appendTo: $tabs, 
     helper:"clone", 
     zIndex: 99999, 
     start: function(){ $tabs.addClass("dragging") }, 
     stop: function(){ $tabs.removeClass("dragging") } 
    }); 

    var $tab_items = $("ul:first > li", $tabs).droppable({ 
     accept: ".connectedSortable tr", 
     hoverClass: "ui-state-hover", 
     over: function(event, ui) { 
     var $item = $(this); 
     $item.find("a").tab("show"); 
     } 
    }); 
}); 

EDIT:Link to jsfiddle

+0

Danke für Ihre Antwort, aber ich benutze Bootstrap für Tabs, Sie verwenden jquery UI Tabs. Kann ich das mit den Booststrap-Tabs machen? –

+0

@JKS, oh ja Entschuldigung, ich hatte die Tatsache übersehen, dass Sie Bootstrap-Tabs verwenden - ich habe gerade die Antwort mit einem jsfiddle aktualisiert, das eine Bootstrap-Version enthält – marty

+0

Das ist wirklich cool. Ich habe einige Situationen, in denen ich das verwenden könnte. Ich habe jedoch einige Fehler gefunden. Tab 1 kann nicht vollständig geleert werden und wenn Tab 2 vollständig geleert ist, können Sie nichts mehr zurück bewegen. – Mildfire

Verwandte Themen