2013-02-16 113 views
9

我有兩個選項卡(使用boostrap構建),每個選項卡都有自己的表。從一個選項卡表拖放錶行到另一個選項卡表 - jquery

我需要從一個選項卡拖動錶行並放入另一個選項卡表。拖動時,我想在放入表格之前打開光標下的選項卡。任何幫助讚賞。

這是我的HTML代碼

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

這是我的JS代碼

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

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

這個網站太廣泛了。但基本上你需要檢測拖動的對象何時「超過」標籤,打開該標籤等等......再加上dom操作來正確地將拖動的對象插入新位置的dom分支。 – 2013-02-16 06:54:04

+0

我試圖拖動時打開標籤,但我不能做 – 2013-02-16 06:56:59

+0

目前這是基於你的代碼的http://jsfiddle.net/xuWCm/小提琴,但第二個標籤點擊時不打開。你確定這段代碼包含了一切嗎?因爲即使'var widthFixHelper'在任何地方都沒有被引用。 – 2013-02-20 04:57:24

回答

23

這裏是一個融合jQueryUI的解決方案可棄與排序,以滿足您的要求:

$(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"); 
     } 
    }); 
}); 

編輯:編輯:Link to jsfiddle

+0

感謝您的回答,但我使用引導程序的標籤,你使用jQuery UI標籤。我可以使用booststrap選項卡來執行此操作嗎? – 2013-02-23 09:47:13

+0

@JKS,哦對了,對不起,我忽略了使用bootstrap選項卡的事實 - 我剛剛更新了包含引導版本的jsfiddle的答案 – marty 2013-02-23 15:11:02

+0

這真的很酷。我有一些情況可以使用它。但是,我發現了一些錯誤。選項卡1不能完全清空,如果選項卡2完全清空,則不能再移動任何內容。 – Mildfire 2013-02-26 17:28:28

相關問題