2010-07-31 8 views
22

खींचकर वर्तमान आइटम को हटाएं मेरी समस्या: क्रमबद्ध घटना बाहर: जब मैं सूची में कुछ खींचता हूं या जब मैं सूची को सॉर्ट करता हूं तो आग लगती है। लेकिन जब मैं कोई आइटम खींचता हूं तो मैं केवल फ़ंक्शन शुरू करना चाहता हूं।Jquery Sortable,

मेरे कोड

 $(document).ready(function ust() 
     {  
      $('#div1').sortable({ 
       out: function(event, ui) { $('#nfo').append('OUT<br />'); } 
      }); 

     }); 

कार्य उदाहरण http://jsfiddle.net/FrbW8/22/

+0

हम्म, क्या यह एक jquery बग है? Coz ... आउट -> यह ईवेंट तब ट्रिगर होता है जब एक क्रमबद्ध आइटम किसी कनेक्टेड सूची से दूर हो जाता है। प्रारंभ करें -> सॉर्टिंग शुरू होने पर यह ईवेंट ट्रिगर होता है। रोकें -> सॉर्टिंग बंद होने पर यह ईवेंट ट्रिगर होता है। – Peter

+2

jsFiddle –

+3

ब्लेयर के लिए +1 - यह अभी तक बेवकूफ बहाना है जिसे मैंने अब तक देखा है। – Christian

उत्तर

4

यह बाहर कॉलबैक के डिफ़ॉल्ट व्यवहार है। यह jquery ui trac ticket

मैं वास्तव में 'तार्किक' व्यवहार धारणा से सहमत नहीं हूं।

"हालांकि, ध्यान दें कि" बाहर "कॉलबैक अभी भी शुरू हो जाएगा यदि आप एक सूची में खींचें और फिर माउस जारी (लेकिन यदि आप सूची पर नहीं कर रहे हैं नहीं)। यह वह जगह है तार्किक व्यवहार और सामान्य क्रमिक के लिए भी होता है। "

+0

आग रोकना संभव है? उदाहरण के लिए, मैं सॉर्टस्टार्ट और सॉर्टस्टॉप जोड़ता हूं। -> अगर सॉर्टार्ट: -> abbort out: ... अगर sortstop: -> abbort out: – Peter

+0

मुझे लगता है कि गन्दा हो जाएगा। आप अपने हाथों को गंदे पाने और इस 'आउट' व्यवहार को रोकने के लिए jquery ui src को बदलने की कोशिश कर सकते हैं। – redsquare

+0

अरे redsquare, लेकिन जब मैं src बदलने के लिए, मैं इसे हर ui अपडेट के बाद बदलना होगा। ? :( सही – Peter

33

उपयोग beforeStop आइटम अवरोधन करने और इसे हटाने:

receive: function(e, ui) { sortableIn = 1; }, 
over: function(e, ui) { sortableIn = 1; }, 
out: function(e, ui) { sortableIn = 0; }, 
beforeStop: function(e, ui) { 
    if (sortableIn == 0) { 
     ui.item.remove(); 
    } 
} 

(मैं मूल रूप से गूगल में इस पाया है, लेकिन अब लिंक मिल सकता है तो, मैं स्रोत को संदर्भित नहीं लिए माफी माँगता हूँ।।)

+3

यहाँ लिंक है: http: //forum.jquery।।com/topic/drag-item-out-of-sortable – lo5

+0

ऐसा लगता है कि यह आइटम की सामान्य सॉर्टिंग को रोकता है। यदि मैं इसका उपयोग करता हूं और आइटम को सॉर्ट करने के लिए खींचता हूं, भले ही यह आइटम को हटा देता है, तो यह नियंत्रण से बाहर नहीं जाता है। –

3

अन्य समाधान कनेक्टेड सॉर्ट करने योग्य सूचियों के साथ काम नहीं करते हैं, इसलिए मैं अपना खुद का समाधान पोस्ट कर रहा हूं जो मेरे मामले के लिए पूरी तरह से काम करता है। जब "सॉर्ट करने योग्य सूचियों के बाहर तत्वों को छोड़ दिया जाता है तो" ड्रॉप "ईवेंट को कैप्चर करने वाले" ड्रॉपपॉबल "प्लगइन का उपयोग करता है। मैं this.element.find('.ui-sortable-helper').length का उपयोग के बीच "घटना सुलझा" और "घटना बाहर ड्रॉप" फर्क http://jsfiddle.net/n3pjL/

+0

यह एक दृष्टिकोण है जिसे मैंने आज असफल तरीके से आजमाया, क्योंकि मुझे 'लालची' विकल्प नहीं मिला। संकेत के लिए धन्यवाद! – Tsunamis

1

:

$('#div1').sortable({ 
    .... 
}).droppable({greedy: true}) 

$('body').droppable({ 
    drop: function (event, ui) {   
     ui.draggable.remove(); 
    } 
}); 

यहाँ कार्रवाई में इस दृष्टिकोण का एक jsfiddle है। जब आप सॉर्ट कर रहे हों, सॉर्ट किए गए आइटम में क्लास ui-sortable-helper है। ड्रॉप के बाद कोई अन्य यूई-सॉर्टेबल-क्लास नहीं है जब तक आप दोबारा सॉर्ट करना शुरू नहीं करते (कम से कम मेरी स्क्रिप्ट में)। किसी की मदद करने की उम्मीद है।

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

  • कोई संबंधित समस्या नहीं^_^