2012-12-12 21 views
7

पर रीसेट कैसे करते हैं I JQuery Sortable का उपयोग कर रहा हूं। मैं जानना चाहता हूं कि कई रिसॉर्टिंग के बाद, सॉर्ट करने योग्य नियंत्रण को अपने मूल स्थिति में एक फॉर्म रीसेट के समान बहाल करना संभव है या नहीं। 'रद्द करें' विकल्प केवल अंतिम प्रकार के प्रयास को प्रभावित नहीं करता है, उन सभी को नहीं।आप JQuery Sortable

+0

शायद एक डेटा विशेषता में डिफ़ॉल्ट आदेश की दुकान है? –

उत्तर

2

मूल तत्व ऑर्डर का संदर्भ संग्रहीत करें, फिर उन्हें पुन: क्रमबद्ध करने के लिए उपयोग करें।

var sortableElements = $("#sortable div"); 
$("#sortable").sortable(); 

अब जब आप मूल सॉर्ट ऑर्डर को पुनर्स्थापित करना चाहते हैं, तो बस divs को #sortable तत्व में संलग्न करें।

$("#sortable").append(sortableElements); 
1

आप दस्तावेज़ पर माता-पिता की प्रतिलिपि कैश कर सकते हैं और इसे रीसेट पर पुनर्स्थापित कर सकते हैं।

उदाहरण के लिए

, अगर <ul class="parent"> अपने sortable तत्व है:

var sortableCache; 
$(document).ready(function() { 
    ... 
    $('ul.parent').sortable({ ... }); 
    ... 
    sortableCache = $('ul.parent').clone(true); 
}); 

रीसेट पर, आप कर सकते हैं:

$('ul.parent').replaceWith(sortableCache); 
13

मैं व्यक्तिगत रूप से यह इस तरह से कर रही है जैसे:

$("#sortable").sortable({config...}); 
var cache = $("#sortable").html(); 

रीसेट

$("#sortable").html(cache).sortable("refresh"); 

मैंने .clone() और.children() और यहां तक ​​कि $ ("# sortable> *) का उपयोग करने का प्रयास किया, लेकिन .html() को सबसे अच्छा विकल्प कैशिंग ढूंढने का प्रयास किया।

मेरी स्थिति में, मेरे पास दो कनेक्ट सूचियां हैं। एक मौजूदा आइटम जिसमें उपयोगकर्ता सॉर्ट या हटा सकता है और उपलब्ध वस्तुओं की एक और सूची जिसे उपयोगकर्ता "वर्तमान आइटम" सूची में जोड़ने के लिए ले जा सकता है। मुझे मूल स्थिति में सबकुछ रीसेट करने का एक तरीका चाहिए। उपरोक्त काम करता है।

+0

यदि आपके स्रोतों के रूप में एकाधिक श्रेणी आधारित सूचियां हैं तो यह समाधान काम नहीं करेगा। मैं एक में फ़ीड करने के लिए 2 सूचियों का उपयोग कर रहा हूं - जहां मेरा चयनकर्ता एक वर्ग है। यह एक शर्म की बात है कि एक आधिकारिक "रीसेट" नहीं है जो प्रत्येक आइटम के स्रोत को वापस जाने के लिए जानता है। – Antony

0

इस आसान तरीका

$("#sortable").sortable("cancel"); 
+0

यह केवल अंतिम क्रमबद्ध परिवर्तन को पूर्ववत करेगा। यदि मैं एकाधिक को सॉर्ट करता हूं और फिर इसे निष्पादित करता हूं, तो यह उन सभी के लिए काम नहीं करेगा –

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