2013-02-16 15 views
9

मेरे पास दो टैब हैं (बूस्टरप का उपयोग करके निर्मित) और प्रत्येक टैब की अपनी तालिका होती है।तालिका टैब को एक टैब तालिका से दूसरे टैब तालिका में खींचें और छोड़ें - Jquery

मुझे एक टैब से तालिका पंक्ति खींचने और अन्य टैब तालिका में ड्रॉप करने की आवश्यकता है। खींचते समय मैं टेबल में ड्रॉप करने से पहले कर्सर के नीचे टैब खोलना चाहता हूं। किसी भी मदद की सराहना की।

यह मेरा एचटीएमएल कोड

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

है यह यहाँ मेरी जे एस कोड

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

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

बिट इस साइट के लिए बहुत व्यापक है। लेकिन मूल रूप से आपको यह पता लगाना होगा कि ड्रैग ऑब्जेक्ट एक टैब पर "ओवर" है, उस टैब को खोलें, आदि ... साथ ही ड्रैग ऑब्जेक्ट को ड्रैग किए गए ऑब्जेक्ट को नए स्थान की डोम शाखा में ठीक से सम्मिलित करने के लिए। –

+0

मैंने खींचते समय टैब खोलने का प्रयास किया, लेकिन मैं –

+0

नहीं कर सका वर्तमान में यह http://jsfiddle.net/xuWCm/ fiddle आपके कोड पर आधारित है, लेकिन दूसरा टैब क्लिक होने पर नहीं खुलता है। क्या आप वाकई इस कोड में सब कुछ शामिल हैं? यहां तक ​​कि 'var widthFixHelper' को कहीं भी संदर्भित नहीं किया गया है। इस कोड के लिए –

उत्तर

23

है एक समाधान है कि jQueryUI जोड़ती sortable साथ droppable अपने आवश्यकता को पूरा करने के लिए है:

$(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 टैब का उपयोग कर रहे हैं। क्या मैं बूस्टस्ट्रैप टैब का उपयोग कर ऐसा कर सकता हूं। –

+0

@JKS, ओह हाँ क्षमा करें मैंने इस तथ्य को अनदेखा कर दिया है कि आप बूटस्ट्रैप टैब का उपयोग करते हैं - मैंने अभी एक jsfiddle के साथ उत्तर अपडेट किया है जिसमें बूटस्ट्रैप संस्करण – marty

+0

है यह वास्तव में अच्छा है। मेरे पास कुछ स्थितियां हैं जहां मैं इसका उपयोग कर सकता हूं। हालांकि, मुझे कुछ कीड़े मिलीं। टैब 1 को पूरी तरह से खाली नहीं किया जा सकता है और यदि टैब 2 पूरी तरह से खाली हो गया है तो आप अब कुछ भी वापस नहीं ले जा सकते हैं। – Mildfire

संबंधित मुद्दे