2010-03-11 11 views

उत्तर

9

पहले लोड jQuery यूआई:

<link type="text/css" href="css/themename/jquery-ui-1.7.1.custom.css" rel="Stylesheet" /> 
<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script> 
<script type="text/javascript" src="js/jquery-ui-1.7.1.custom.min.js"></script> 

तब का उपयोग jQuery यूआई draggable method:

<script type="text/javascript"> 
$(function() { 
    $("#b").draggable(); 
}); 
</script> 
+0

jQueryUI अपने बैकएंड ठीक से साल में अद्यतन, और अब अक्सर पक्ष अन्य अनुप्रयोग developement साथ सफाई से चल रहे मुद्दे हैं नहीं पड़ा है। कारण यह है कि jqueryUI के नवीनतम संस्करण में jquery v1.7.x की आवश्यकता होती है, जहां इस टिप्पणी के समय jquery स्वयं v3.2.1 पर है। – Nosajimiki

34

आप केवल jQuery के साथ कर सकते हैं, jQuery यूआई के बिना:

function handle_mousedown(e){ 
    window.my_dragging = {}; 
    my_dragging.pageX0 = e.pageX; 
    my_dragging.pageY0 = e.pageY; 
    my_dragging.elem = this; 
    my_dragging.offset0 = $(this).offset(); 
    function handle_dragging(e){ 
     var left = my_dragging.offset0.left + (e.pageX - my_dragging.pageX0); 
     var top = my_dragging.offset0.top + (e.pageY - my_dragging.pageY0); 
     $(my_dragging.elem) 
     .offset({top: top, left: left}); 
    } 
    function handle_mouseup(e){ 
     $('body') 
     .off('mousemove', handle_dragging) 
     .off('mouseup', handle_mouseup); 
    } 
    $('body') 
    .on('mouseup', handle_mouseup) 
    .on('mousemove', handle_dragging); 
} 
$('#b').mousedown(handle_mousedown); 
+3

यह स्वीकार्य उत्तर होना चाहिए क्योंकि इसे अतिरिक्त प्लगइन की आवश्यकता नहीं है। – BFWebAdmin

+0

@BFWebAdmin जरूरी नहीं है क्योंकि सवाल स्पष्ट रूप से/विशेष रूप से jquery के लिए पूछता है .. – MJB

+1

@MJB - अतिरिक्त प्लगइन से, मेरा मतलब jQuery UI है, जिसे अलग से स्थापित किया जाना है। – BFWebAdmin

11

मैं बस पूरे jQuery UI में "ड्रैगिंग" की बजाय इसे बहुत पोर्टेबल बना दिया।

यह नीचे खींचते समय टेक्स्ट का चयन नहीं करता है, इसलिए यह वास्तव में अन्य कोड के विपरीत उत्पादन में काम करता है।

यह भी काफी अच्छी तरह से तय हो गई तैनात तत्वों के साथ काम करता है तो आप "डॉक" कर सकते हैं

$.fn.draggable = function(){ 
    var $this = this, 
    ns = 'draggable_'+(Math.random()+'').replace('.',''), 
    mm = 'mousemove.'+ns, 
    mu = 'mouseup.'+ns, 
    $w = $(window), 
    isFixed = ($this.css('position') === 'fixed'), 
    adjX = 0, adjY = 0; 

    $this.mousedown(function(ev){ 
     var pos = $this.offset(); 
     if (isFixed) { 
      adjX = $w.scrollLeft(); adjY = $w.scrollTop(); 
     } 
     var ox = (ev.pageX - pos.left), oy = (ev.pageY - pos.top); 
     $this.data(ns,{ x : ox, y: oy }); 
     $w.on(mm, function(ev){ 
      ev.preventDefault(); 
      ev.stopPropagation(); 
      if (isFixed) { 
       adjX = $w.scrollLeft(); adjY = $w.scrollTop(); 
      } 
      var offset = $this.data(ns); 
      $this.css({left: ev.pageX - adjX - offset.x, top: ev.pageY - adjY - offset.y}); 
     }); 
     $w.on(mu, function(){ 
      $w.off(mm + ' ' + mu).removeData(ns); 
     }); 
    }); 

    return this; 
}; 

लेकिन यह पूर्ण हो जाती है या निश्चित स्थिति पहले से ही तत्व के लिए लागू किया जाता है।

इतना है कि यह प्रयोग करें:

$('#something').draggable(); 
+0

मैं इस एफवाईआई का उपयोग करने की सिफारिश नहीं करता हूं। ड्रैगगेबल पर एमडीएन देखें और मूल ब्राउज़र के तरीके का उपयोग करें। –

+0

मेरे लिए ठीक काम करता है! – foreyez

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