2010-06-11 13 views
12

शायद मुझे समझ में नहीं आता कि क्लोन सॉर्ट करने योग्य के साथ कैसे काम करता है, लेकिन यह वही है जो मैं करना चाहता हूं।सॉर्ट करने योग्य क्लोन सहायक काम नहीं कर रहा

किसी आइटम को सॉर्ट करते समय मुझे उस आइटम का क्लोन चाहिए जो मैं खींच रहा हूं जब तक कि मैं आइटम को अपनी नई स्थिति में नहीं छोड़ देता।

<html> 
<head> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/jquery-ui.min.js"></script> 

    <style type="text/css"> 
     .sort { width: 150px; } 
     .ui-state-highlight { background-color: #000; height:2px; } 
    </style> 
</head> 
<body> 
    <div> 
     <ul class="sort"> 
      <li>Item 1</li> 
      <li>Item 2</li> 
      <li>Item 3</li> 
      <li>Item 4</li> 
     </ul> 
    </div> 

    <script type="text/javascript"> 
     $(function() { 
      $('.sort').sortable({ 
       helper: 'clone', 
       placeholder: 'ui-state-highlight', 
       opacity: '.5' 
      }) 
     }) 
    </script> 
</body> 
</html> 

मदद के लिए अग्रिम धन्यवाद:

यहाँ कोड है!

उत्तर

12

आप क्लोन विकल्प का उपयोग करते हैं, मूल आइटम style="display: none" साथ छिपा हुआ है जब आप खींचना शुरू करें। आप इसे फिर से दिखाने के लिए सॉर्ट इवेंट (या जो भी मूल आइटम छुपाते हैं) में एक हैंडलर संलग्न कर सकते हैं। तब सबकुछ आपके लिए काम करना चाहिए।

पीएस मैंने मूल तत्व के साथ क्या हो रहा था यह देखने के लिए Firebug का उपयोग किया। यदि आप इसका उपयोग नहीं कर रहे हैं तो आपको वास्तव में होना चाहिए!

1

हालांकि यह आपके द्वारा जारी की गई समस्या को ठीक नहीं कर सकता है। आपके पैरामीटर के अंत में एक अतिरिक्त कॉमा है।

opacity: '.5', 
12

इसे हैक करने का यह एकमात्र तरीका है। आप यहां से नेतृत्व कर सकते हैं। नीचे अपनी कॉन्फ़िगरेशन बदलें।

 $('.sort').sortable({ 
      helper: 'clone', 
      placeholder: 'ui-state-highlight', 
      opacity: '.5', 
      start: function(event, ui) { 
       $('.sort').find('li:hidden').show(); 
      } 
     }) 
+11

$ (ui.item) .show() और 'सही' – Vigrond

+0

और $ (ui.helper) क्लोन सहायक शामिल होगा: # sortable1 में पहली तत्व क्लोनिंग के लिए मैं इस तरह के एक कोड का उपयोग करें। यदि आप इसे संशोधित करना चाहते हैं। – Armin

4

मेरे पास दो सूचियां, sortable1 और sortable2 हैं। मैं sortable1 से sortable2 और इसके विपरीत आइटम्स को क्लोन करना चाहता हूं।

एक सुधार यह जांचना होगा कि यह शीर्ष तत्व है, यदि यह है। पिछला() काम नहीं करेगा। तो जांच करें कि क्या कोई है, अगर() के बाद उपयोग नहीं किया जाता है। जॉन Bledsoe ने कहा कि सुधारों के बारे में

$("#sortable1").sortable({ 
     helper:"clone", 
     connectWith: "#sortable2", 
     start:function(event,ui){ 
      $(ui.item).show(); 
      clone = $(ui.item).clone(); 
      before = $(ui.item).prev(); 
     }, 
     stop:function(event, ui){ 
      before.after(clone); 
     } 
    }).disableSelection(); 
$("#sortable2").sortable({ 
     helper:"clone", 
     connectWith: "#sortable1", 
     start: function(event, ui){ 
      $(ui.item).show(); 
      clone = $(ui.item).clone(); 
      before = $(ui.item).prev(); 
     }, 
     stop:function(event, ui){ 
      before.after(clone); 
     } 
    }).disableSelection(); 
0

कुछ शब्द:

मेरे समाधान इस था।

stop:function(event, ui){ 
     if (before.length) before.after(clone); 
     else $(this).prepend(clone); 
    }, 
संबंधित मुद्दे