2016-04-12 9 views
1

Id ile id adını sürüklemek istiyorum id = id = "dragme" Bunu nasıl yapabilirim. Ve eğer mümkünse sürüklenen div dragme div adı sınırının dışına çıkmak zorunda kalmamalıdır.Drag tüm pencerede çalışıyor, ancak ben sadece bu işlevin sadece div tarafından çalışılmasını istiyorum

<script> 
$(document).ready(function() { 
    var $dragging = null; 

    $(document.body).on("mousemove", function(e) { 
     if ($dragging) { 
      $dragging.offset({ 
       top: e.pageY, 
       left: e.pageX 
      }); 
     } 
    }); 


    $(document.body).on("mousedown", document.getElementById("dragset"), function (e) { 
     $dragging = $(e.target); 
    }); 

    $(document.body).on("mouseup", function (e) { 
     $dragging = null; 
    }); 
}); 
</script> 
<div id="limits" style="background:#ccc; width:600px; height:600px;"> 
<div style="background:red; width:200px; height:200px;" id="dragme"></div> 
</div> 
+0

neden izin veriyorsun sadece bu gibi ofset gelen kırmızı kutu yüksekliği ve genişliğinin yarısı geri çekmek için kodu kullanma sürüklerken üst sol köşeyi işaret ettim, onu fare işaretçisini işaret ettiğim noktadan getirmeliyim ve o noktaya kadar ayrılmalıyım. –

+0

jQuery UI [Sürüklenebilir] (https://jqueryui.com/draggable/) eklentisine bir göz atın. Bunun yerine kullanmak daha kolay olabilir. – JCOC611

+0

Sayfanızda çalışmıyor –

cevap

0

var $dragging = null; 
 

 
$("#dragme").on("mousemove", function(e) { 
 
    if ($dragging) { 
 
    $dragging.offset({ 
 
     top: e.pageY - 100, //retract here 
 
     left: e.pageX - 100 //retract here 
 
    }); 
 
    } 
 
}); 
 

 

 
$(document.body).on("mousedown", document.getElementById("dragset"), function(e) { 
 
    $dragging = $(e.target); 
 
}); 
 

 
$(document.body).on("mouseup", function(e) { 
 
    $dragging = null; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="limits" style="background:#ccc; width:600px; height:600px;"> 
 
<div style="background:red; width:200px; height:200px;" id="dragme"></div>

İsterseniz

+0

Tüm kod parçasına sahip tek bir sayfada bile çalışmayan tüm komut dosyaları. –

+0

Sürükleme kullandığınız js adındaki adla nasıl hareket edersiniz ve div içindeki id adı dragme ??? –

+0

Pasajı pasajda olduğu gibi eklemeniz gerekir. Kodunu güncelledim böylece sadece dragme sürüklenebilir – Zorken17

1

jQuery UI sürüklenebilir en containment seçeneğini kullanmak olacaktır Bunu yapmanın en kolay yolu:

$(function() { 
 
    $("#draggable").draggable({ 
 
    containment: '#container' 
 
    }); 
 
});
#container { 
 
    height: 300px; 
 
    border: 1px solid; 
 
} 
 
#draggable { 
 
    width: 150px; 
 
    height: 150px; 
 
    padding: 0.5em; 
 
}
<script src="http://code.jquery.com/jquery-1.10.2.js"></script> 
 
<script src="http://code.jquery.com/ui/1.11.4/jquery-ui.js"></script> 
 

 
<div id="container"> 
 
    <div id="draggable" class="ui-widget-content"> 
 
    <p>Drag me around</p> 
 
    </div> 
 
</div>

+0

Snippet'te çalışıyor ancak neden sayfada benim tarafımda değil? –

+0

jQuery, jQuery UI dosyalarının yüklenip yüklenmediğini, kodun document.ready paketinin içinde olup olmadığını ve seçicilerin doğru olup olmadığını kontrol edebilir misiniz ..? Ya da belki de geliştirici konsolunda bir hata var mı? –