2009-04-08 9 views
11

फोन शुरू खींचें jQuery के यूआई मेंjQuery के यूआई, मैं खींचने योग्य के रूप में एक तत्व कॉन्फ़िगर कर सकते हैं मैन्युअल रूप से

$("#drag").draggable(); 

लेकिन वहाँ एक तरह से शुरू करने और एक और समारोह से मैन्युअल रूप से खींचें कार्यों को रोकने के लिए है लागू द्वारा? यानी

someOtherFunction = function() { 
    $("#drag").startdrag(); 
} 
yetAnotherFunction = function() { 
    $("#drag").stopdrag(); 
} 
+0

हो सकता है आप scrollTo में रुचि रखते हैं:

पिक्सेल सटीक तत्व चयन के लिए, मेरी एक और उत्तर देखते हैं? – TStamper

+0

मैंने कभी नहीं कहा कि मैं माउस का उपयोग नहीं करना चाहता हूं। मुझे div के बाहर ड्रैग का आह्वान करना है क्योंकि इसे FScommand का उपयोग करके फ्लैश फ़ाइल में से शुरू किया जाना चाहिए। – Jan

उत्तर

12

ऊपर दिए गए उत्तर अधिक जटिल लगते हैं।

$('.nonDraggableObjectWhichTriggersDrag').mousedown(function(e) { 
    $('.draggableObject').trigger(e); 
}); 
+0

मुझे पूरा यकीन नहीं है कि यह मेरी मूल परियोजना में काम करेगा (क्योंकि इसमें फ्लैश और 'fsCommand' शामिल है), लेकिन यह पोस्ट किए गए एक समाधान समाधान के सबसे नज़दीकी है। प्रोजेक्ट में मैंने फ्लैश फ़ाइल के ऊपर ड्रैगहैंडर डालने और 'fsCommand' के माध्यम से फ्लैश कमांड को कॉल करने वाले फ़्लैश बटन पर divs डालने का अंत किया। सुंदर नहीं लेकिन यह काम किया। – Jan

+1

मेरे लिए काम नहीं करता है। – wh1t3cat1k

+1

+1 - मुझे पता है कि यह टिप्पणी थोड़ी देर हो चुकी है लेकिन 'ट्रिगर हैडलर (ई)' का उपयोग शायद इसके बजाय किया जाना चाहिए। जब मैंने 'ट्रिगर' का उपयोग किया, तो मैंने एक स्टैक ओवरफ़्लो के साथ समाप्त किया क्योंकि जिस तरह से मेरे पास अन्य फ़ंक्शन/डोम लगाए गए थे। इसे 'ट्रिगर हैंडलर' में बदलकर इस समस्या का समाधान हुआ क्योंकि कोई बुलबुला नहीं हुआ। 'ट्रिगर हैडलर' भी अधिक कुशल होगा। –

1

खींचें शुरुआत माउस की घटनाओं को देखकर स्क्रिप्ट के माध्यम से शुरू कर दिया है। एक माउस चाल के बाद माउस नीचे। यदि आप जावास्क्रिप्ट के माध्यम से उन माउस आंदोलनों को अनुकरण कर सकते हैं (मुझे नहीं पता कि यह कहां, कैसे, या यहां तक ​​कि यदि यह संभव है), तो उसे ड्रैग की शुरुआत से आग लगनी चाहिए।

नोट: बस पाया गया कि यूयूआई के पास माउस चाल और माउस क्लिक अनुकरण करने का एक तरीका है। http://developer.yahoo.com/yui/yuitest/#useractions

+0

यह बहुत जटिल लगता है। हो सकता है कि अन्य पुस्तकालयों के साथ पूरा करना आसान हो जाए? शायद prototype.js या कुछ समान है? – Jan

+0

इसके लिए जाओ। यदि प्रोटोटाइप माउस आंदोलन की घटनाओं को अनुकरण कर सकता है, तो यह यूई के साथ "मुश्किल" जैसा ही होगा। – DMCS

1

इस तरह खींच आप ही खींच कॉलबैक में झूठी वापस लौटाना होगा रोकने के लिए, कुछ:

$("#unlock-handle").draggable({axis:'x', containment:'parent', drag:onDrag}); 

... 

var onDrag = function(e) {  
    if ($(this).position().left > 200) return false; 
}; 

आशा है कि यह मदद करता है :-)

1

मैं ट्रिगर करने के लिए एक रास्ता खोजने फ्लॉप मैन्युअल रूप से खींच रहा है, लेकिन मुझे अपनी समान स्थिति के लिए एक समाधान मिला है।

मेरे पास यह स्थिति दो ओवरलैपिंग छवियों (नीचे छवि देखें) के साथ आंशिक रूप से पारदर्शी दोनों थी। ड्रैगगेबल की शुरुआत (घटना) में मैं यह जांचना चाहता था कि यह पारदर्शी पिक्सेल हिट करता है या नहीं। यदि ऐसा है, तो मैंने यह देखने के लिए एक और तत्व के लिए देखा कि क्या वह मारा गया था। और अगर ऐसा होता, तो मैं इसे खींचने की शुरुआत करता था।

enter image description here

समाधान? मैं mousemove पर छवियों को पुन: व्यवस्थित करता हूं, और तब खींचने योग्य तब उस शीर्ष छवि के लिए ट्रिगर किया जाता है। क्योंकि मैं खींचने योग्य विश्वास नहीं करते माउस सहभागिता के बिना एक वस्तु को स्थानांतरित कर सकते हैं registering clicks on an element that is under another element

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