2016-04-12 39 views
1

我想拖動ID爲ID =「dragme」的div如何操作。如果可能的話,拖動div dragme不應該在div名稱限制外面。拖動正在整個窗口上工作,但我希望它只能通過編號的div工作

<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

而且爲什麼它讓我指向左上角,拖動它時,必須將它從我指向鼠標指針的位置移開,並保持該點直到離開。 –

+0

看看jQuery UI [Draggable](https://jqueryui.com/draggable/)插件。相反,使用它可能會更容易。 – JCOC611

+0

它不在我的頁面上工作 –

回答

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>

如果你想用你的代碼只是收回一半的紅色框的高度和寬度,從這樣的偏移:

+0

任何包含所有代碼片段的腳本文件即使在單個頁面上也不能運行。 –

+0

你如何移動與您使用dragset的js id中的名稱,並且div中的id名稱是dragme? –

+0

您需要在片段中包含jquery。我更新了代碼,所以只能拖動dragme – Zorken17

1

要做到這一點是使用jQuery UI的可拖動的containment選擇最簡單的方法:

$(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

它工作在片段,但爲什麼不在我身邊的頁面? –

+0

你可以仔細檢查jQuery,jQuery UI文件是否加載,代碼是否在document.ready包裝器中,選擇器是否正確..?或者,也許你在開發者控制檯中有錯誤? –

相關問題