2009-08-18 11 views
5

मेरे पास jQuery UI draggable और कई अलग-अलग परिभाषित droppables हैं। चूंकि ड्रॉपपॉबल में से एक को tolerance: 'intersect' कॉन्फ़िगर किया गया है, इसलिए एक ही समय में एक से अधिक प्रकार के ड्रॉपपेल पर ड्रैगगेबल को छोड़ना संभव है।मैं एकाधिक jQuery UI ड्रॉपपैबल्स को ट्रिगर होने से कैसे रोकूं?

अवांछित ड्रॉपपैबल्स को फायरिंग से रोकने का सबसे अच्छा तरीका क्या है? असल में, मैं ड्रॉपपैबल्स को प्राथमिकता देना चाहता हूं ताकि tolerance: 'intersect' के साथ ड्रॉपपैबल्स ट्रिगर नहीं हो पाएंगे यदि कोई अन्य ड्रॉपपेल ट्रिगर किया गया हो।

अद्यतन - अधिक जानकारी चीजों को स्पष्ट करने:

  • droppables के सभी tolerance: 'intersect' साथ droppable में से एक वर्ग के अलावा tolerance: 'pointer' कॉन्फ़िगर किया गया है।

  • ड्रॉपपेल के एक वर्ग में tolerance: 'intersect' है कि ड्रॉपपैबल्स वास्तव में संकीर्ण हैं, और उपयोगकर्ताओं को tolerance: 'pointer' के साथ उन्हें ढूंढने में समस्याएं हैं।

  • बूंदों को आगे छोड़कर एक विकल्प नहीं है।

  • droppables में से कोई भी ओवरलैप, लेकिन जब माउस सूचक tolerance: 'pointer' के साथ एक और droppable खत्म हो गया है खींचने योग्य इतना बड़ा tolerance: 'intersect' के साथ एक droppable ओवरलैप है। इस तरह से एक बार में दो बूंदों को ट्रिगर किया जा सकता है।

  • यूआई निर्धारित किया गया है ताकि उपयोगकर्ता के इरादे tolerance: 'intersect' ड्रॉपपेल को अनदेखा करके निर्धारित किया जा सके यदि कोई अन्य ड्रॉपपेल ट्रिगर किया गया हो; यानी यदि उपयोगकर्ता ने tolerance: 'pointer' के साथ ड्रॉप पॉइंट पर माउस पॉइंटर को स्थानांतरित किया है, तो यह मानना ​​सुरक्षित है कि वह इसे वहां छोड़ना चाहता है। समस्या यह है कि, मैं अवांछित ड्रॉपटेबल को अनदेखा करने का तरीका नहीं समझ सकता।

+0

क्या आप मुझे इस तरह की समस्याओं के लिए सबसे अच्छा समाधान बता सकते हैं क्योंकि मुझे एक ही समस्या है, अगर आप याद रखें :) –

उत्तर

0

उन्हें शारीरिक रूप से दूर एक दूसरे से दूर ले जाएं ताकि उन्हें एक साथ नहीं छोड़ा जा सके। अन्यथा, आप कैसे निर्धारित करना चाहते हैं कि उपयोगकर्ता का इरादा क्या है? क्या आप प्रत्येक छेड़छाड़ करने योग्य ड्रॉप पर ड्रैगगेबल के प्रतिशत की गणना करने जा रहे हैं?

+0

हाय जेसन, आपके उत्तर के लिए धन्यवाद। कृपया अपने प्रश्नों के उत्तर के लिए मेरे मूल प्रश्न में पहला अपडेट देखें। – bryan

+0

क्या आप जो भी पूरा करने की कोशिश कर रहे हैं उसका स्क्रीन शॉट ले सकते हैं? – Jason

1

शायद "कम पसंदीदा" ड्रॉपपेबल की अधिक घटना में आप जांच सकते हैं कि ड्रैगगेबल "पसंदीदा" ड्रॉपपेल पर भी है और यदि यह "कम पसंदीदा" ड्रॉप करने योग्य अक्षम है।

शब्दावली के लिए खेद है, बस brainstorm करने की कोशिश कर रहा है।

7

over: में, इरादा droppable करने के लिए एक वर्ग आवंटित और अन्य सभी droppables से वर्ग को हटा दें: drop: में

$(".dragArea").not($(this)).removeClass("dragHover"); 
$(this).addClass("dragHover"); 

फिर, तो देखें कि क्या वर्ग के लिए निर्धारित है:

if(!$(this).is('.dragHover')){ 
    return false; 
} 

इस तरह , केवल एक droppable ट्रिगर किया जाता है।

+0

मैं पुष्टि कर सकता हूं कि यह काम करता है (jquery-ui 1.9.1 और jqery 1.8.2) धन्यवाद – Neograph734

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