2013-02-16 35 views
9

Tôi có hai tab (được xây dựng bằng cách sử dụng bộ tăng cường) và mỗi tab có bảng riêng.Kéo và thả hàng của bảng từ một bảng tab sang bảng tab khác - Jquery

Tôi cần kéo hàng của bảng từ một tab và thả vào bảng tab khác. Trong khi kéo tôi muốn mở tab dưới con trỏ trước khi thả vào bảng. Bất kỳ trợ giúp nào được đánh giá cao.

Đây là HTML của tôi đang

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

Đây là mã JS của tôi

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

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

Bit quá rộng cho trang web này. nhưng về cơ bản bạn sẽ cần phải phát hiện khi đối tượng kéo là "over" một tab, mở tab đó, vv ... cộng với các hoạt động dom để xử lý chèn đối tượng kéo vào nhánh dom của vị trí mới đúng cách. –

+0

tôi đã cố gắng mở tab trong khi kéo qua, nhưng tôi không thể làm –

+0

Hiện tại, http://jsfiddle.net/xuWCm/ fiddle này dựa trên mã của bạn, nhưng tab thứ hai không mở khi được nhấp. Bạn có chắc chắn mã này có chứa mọi thứ không? thậm chí 'var widthFixHelper' không được tham chiếu ở bất kỳ đâu. –

Trả lời

23

Dưới đây là một giải pháp kết hợp jQueryUI droppable với sắp xếp được để đáp ứng yêu cầu của bạn:

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

Cảm ơn câu trả lời của bạn, nhưng tôi đang sử dụng bootstrap cho các tab, bạn đang sử dụng các tab jquery ui. Tôi có thể làm điều này bằng cách sử dụng các tab booststrap. –

+0

@JKS, oh vâng xin lỗi tôi đã bỏ qua thực tế là bạn sử dụng các tab bootstrap - Tôi vừa cập nhật câu trả lời với một jsfiddle có chứa một phiên bản bootstrap – marty

+0

Điều này thực sự tuyệt vời. Tôi có một số tình huống mà tôi có thể sử dụng điều này. Tuy nhiên, tôi đã tìm thấy một số lỗi. Tab 1 không thể dọn sạch hoàn toàn và nếu Tab 2 hoàn toàn trống, bạn không còn có thể di chuyển bất kỳ thứ gì trở lại. – Mildfire

Các vấn đề liên quan