2014-07-25 6 views
7

ट्रिगर करें मैं jQuery-UI के draggable विजेट के साथ इसे तारों के तुरंत बाद drag ईवेंट को ट्रिगर करने की कोशिश कर रहा हूं। मेरे पास कुछ कोड है जो इसे खींचने पर बंद हो जाता है, और मैं पृष्ठ लोड के ठीक बाद एक बार यह कोड भी चलाने के लिए चाहता हूं। मैं कभी कभी इस तरह एक मुहावरा का उपयोग अन्य jQuery संचालकों पर ऐसा करते हैं:प्रोग्रामेटिक रूप से एक jQuery-UI ड्रैगगेबल की "ड्रैग" ईवेंट

$('.foo').on('bar', function() { 
    console.debug('bar!'); 
}).trigger('bar'); 

यह draggable के साथ काम करने लगता है। यहाँ मेरी कोड है:

var draggable = $('[draggable]').draggable({ 
    drag: function(event, ui) { 
     //do some stuff 
     console.debug(event); 
    } 
}).trigger('drag'); 

drag हैंडलर कहा जाता हो जाता है जब मैं खींचें, लेकिन पृष्ठ लोड पर नहीं।

जानकारी प्रासंगिक हो सकता है कि:

  1. जब मैं आइटम खींचें, घटना है कि कंसोल में दिखाई देता है इस तरह दिखता है:

    jQuery.Event { 
        type: "drag", 
        target: div#myElementId.ui-draggable, 
        currentTarget: document, 
        delegateTarget: document, 
        data: null, 
        //lots of other properties 
    } 
    
  2. मैं विभिन्न की कोशिश की है समायोजन, और कुछ भी काम नहीं किया है:

    • का उपयोग करनानिर्माता और मैन्युअल रूप से ऊपर गुण
    • सटीक तत्व मैं document.getElementById
    • ट्रिगर mousedown या drag के बजाय mousedown.draggable साथ चाहते हैं निर्दिष्ट की स्थापना

  3. (यह कुछ वैकल्पिक हल कोड मैंने पाया पर आधारित था) हां, मुझे एहसास है कि मैं केवल हैंडलर को अलग से परिभाषित कर सकता हूं। कारण यह है कि मैं ऐसा करना चाहता हूं ui पैरामीटर तक पहुंच प्राप्त करना, जो मुझे तत्व की स्थिति और ऑफसेट प्राप्त करने का एक आसान तरीका प्रदान करता है। मैं उन्हें अन्य तरीकों से ढूंढ सकता हूं, लेकिन यह कष्टप्रद है। मैं भी उत्सुक हूं कि यह क्यों काम नहीं करता है।

  4. Google और एसओ पर खोजों ने कोई समाधान नहीं किया है, केवल कामकाज जो मेरे लिए प्रासंगिक नहीं हैं, साथ ही एक ही समस्या के बारे में अन्य शिकायतों के साथ। Jörn Zaefferer from the jQUI team recommended the jQuery.simulate plugin एक कामकाज के रूप में, तो यह संभव नहीं हो सकता है। यह अजीब लगता है कि वे इसे अन्य jQuery घटनाओं के साथ संगत नहीं बनाएंगे।

+0

जस्टिन का उपयोग है, मैं वही काम करना चाहते हैं, क्या आपने किया था इसे ठीक करो? धन्यवाद – dav

+0

@dav - नहीं। प्लगइन द्वारा असमर्थित प्रतीत होता है। जैसा कि आपने अपने उत्तर में सुझाव दिया है, या प्लगइन कोड को कस्टमाइज़ करना होगा, आपको शायद jquery.simulate का उपयोग करना होगा। –

+0

हाँ मैंने टिप्पणी की थी और कुछ समय बाद ही प्लगइन मिला)) – dav

उत्तर

0

इस

var draggable = $('[draggable]').draggable({ 
    drag: function(event, ui) { 
     dostuff(ui); 
    } 
}); 


function dostuff(ui){ 
    //do stuff with ui 
} 
+1

धन्यवाद, लेकिन मुझे नहीं लगता कि आप सवाल समझ गए हैं।मैं ड्रैग इवेंट * ट्रिगर करने की कोशिश कर रहा हूं, इसे एक हैंडलर संलग्न नहीं करता हूं। दूसरे शब्दों में, मैं तत्व को खींचने के लिए उपयोगकर्ता को अनुकरण करने की कोशिश कर रहा हूं। –

+0

मुझे लगता है कि यह पुराना धागा एक समान प्रश्न का उत्तर देता है लेकिन मैंने इसे आजमाया नहीं है http://stackoverflow.com/questions/730409/jquery-ui-call-start-drag-manually – astroanu

+0

बस 'ड्रैग: डोस्टफ' .. वैसे भी, यह सही तरीका +1 –

3

यहाँ है जैसे कि यह कोशिश jQuery ui प्लगइन

https://github.com/jquery/jquery-ui/blob/9e8e339648901899827a58e5bf919f7dda03b88e/tests/jquery.simulate.js

शामिल उस पृष्ठ पर और फिर बस

$("#myElement").simulate('drag'); 
+0

के रूप में परिभाषित किया गया है सॉर्टेबल खींचते समय कुछ समस्याएं हैं - http://stackoverflow.com/questions/7116149/ जावास्क्रिप्ट-परीक्षण-टू-सिमुलेट-ड्रैग-फॉर-जेक्वायरी-यूई-सॉर्टेबल-सूचियां –

+0

यहां एक अच्छा समाधान और उदाहरण है। http://stackoverflow.com/a/29284621/2576692 –

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