javascript - 拖到屏幕外时如何将div拖回第一个位置

标签 javascript jquery draggable

我在 jQuery 中有一个可拖动的 div,可以从它的句柄中拖动。当它被拖出屏幕时,我需要让它恢复到原来的位置。

html:

<div class="mcwindow">
    <div class="wm"></div>
</div>

j查询代码:

$(function() {
    $( ".mcwindow" ).resizable();
    $( ".mcwindow" ).draggable({ handle: ".wm" });
    $( "div, p" ).disableSelection();
});

CSS:

.mcwindow{
position: fixed;
overflow: hidden;
border: 4px solid #80d0ff;
border-top:0px;
}

.wm{
background: #80d0ff;
width:100%;
height:30px;
}

您还可以在此处查看我到目前为止的代码 http://jsfiddle.net/mzage/n0gLjs9q/

最佳答案

如果你想在 div 被拖出边界时将它移回它的起始位置,你可以执行以下操作。它检查拖动停止。其他事件都是拖拽启动:

http://api.jqueryui.com/draggable/

HTML

<div class="mcwindow">
<div class="wm"></div>
</div>

CSS

.mcwindow{
position: fixed;
overflow: hidden;
border: 4px solid #80d0ff;
border-top:0px;
background: white;
border-radius: 5px;
width:200px;
height:100px;
box-shadow: 0px 0px 20px black;
}

.wm{
background: #80d0ff;
width:100%;
height:30px;
}

JS

var $mcWindow = $('.mcwindow');
$mcWindow.resizable();
$mcWindow.draggable({ handle: ".wm" });
$('div, p').disableSelection();

var docWidth = $(document).width();
var docHeight = $(document).height();
var s = { left: $mcWindow.css('left'), top: $mcWindow.css('top')};
$mcWindow.draggable({
    stop: function(event, ui) {

        if (ui.position.left < 0) {
            $(this).css({ 'left': 0 });
        }
        if (ui.position.left > docWidth-$(this).width()) {
            $(this).css({ 'left': docWidth-$(this).width()-10 });
        }
        if (ui.position.top < 0) {
            $(this).css({ 'top': 0 });
        }
        if (ui.position.top > docHeight-$(this).height()) {
            $(this).css({ 'top': docHeight-$(this).height()-10 });
        }
    }
});

http://jsfiddle.net/mzage/n0gLjs9q/3/

关于javascript - 拖到屏幕外时如何将div拖回第一个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30465274/

相关文章:

javascript - 删除 jQuery 中的 $(window).resize 事件

javascript - 在 Bootstrap-datepicker 中禁用几个日期范围

jquery UI 可拖动 : horizontal dragging inside of container with overflow:scroll?

javascript - 如何向用户显示 ERR_NAME_NOT_RESOLVED 错误

javascript - Sencha Touch 不设置比例并允许在 iPhone 或 iPad 上滚动和调整大小

javascript - Angular 2. 无法将一个组件插入另一组件。模板解析错误 :. ..不是已知元素

jquery - 如何在BXSLIDER中删除 '1' '2' '3' 'next' 'prev'

javascript - 如何将输入值传递给函数参数?

html - 触摸设备上的可拖动属性

gwt - 使数据网格的行在 GWT 中可拖动