pag*_*tti 45 jquery modal-dialog draggable twitter-bootstrap
我正在尝试用这个jquery插件制作bootstrap twitter对话模式draggable:
http://threedubmedia.com/code/event/drag#demos
但它不起作用.
var $div = $('html');
console.debug($('.drag'));
$('#modalTest')
.drag("start", function(ev, dd) {
dd.limit = $div.offset();
dd.limit.bottom = dd.limit.top + $div.outerHeight() - $(this).outerHeight();
dd.limit.right = dd.limit.left + $div.outerWidth() - $(this).outerWidth();
})
.drag(function(ev, dd) {
$(this).css({
top: Math.min(dd.limit.bottom, Math.max(dd.limit.top, dd.offsetY))
, left: Math.min(dd.limit.right, Math.max(dd.limit.left, dd.offsetX))
});
});
Run Code Online (Sandbox Code Playgroud)
你知道我该怎么办?
Miz*_*san 85
$("#myModal").draggable({
handle: ".modal-header"
});
Run Code Online (Sandbox Code Playgroud)
这个对我有用.我是从那里得到的.如果你感谢我,请给Andres Ilich 70%
Bel*_*dar 29
如果您不想使用jQuery UI或任何第三方插件,可以使用下面的代码.它只是简单的jQuery.
$(".modal").modal("show");
$(".modal-header").on("mousedown", function(mousedownEvt) {
var $draggable = $(this);
var x = mousedownEvt.pageX - $draggable.offset().left,
y = mousedownEvt.pageY - $draggable.offset().top;
$("body").on("mousemove.draggable", function(mousemoveEvt) {
$draggable.closest(".modal-dialog").offset({
"left": mousemoveEvt.pageX - x,
"top": mousemoveEvt.pageY - y
});
});
$("body").one("mouseup", function() {
$("body").off("mousemove.draggable");
});
$draggable.closest(".modal").one("bs.modal.hide", function() {
$("body").off("mousemove.draggable");
});
});Run Code Online (Sandbox Code Playgroud)
.modal-header {
cursor: move;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<div class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title">Modal title</h4>
</div>
<div class="modal-body">
<p>One fine body…</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div>Run Code Online (Sandbox Code Playgroud)
Ida*_*hoB 26
排名靠前的解决方案(由Mizbah Ahsan提供)并不是很正确......但是很接近.如果将draggable()应用于模态对话框元素,则在拖动模式对话框时,浏览器窗口滚动条将在屏幕上拖动.解决这个问题的方法是将draggable()应用于模态对话框类:
$(".modal-dialog").draggable({
handle: ".modal-header"
});
Run Code Online (Sandbox Code Playgroud)
谢谢!
像其他人说的那样,最简单的解决方案就是 在显示模态之后draggable()从jQuery UI调用函数:
$('#my-modal').modal('show')
.draggable({ handle: ".modal-header" });
Run Code Online (Sandbox Code Playgroud)
但是Bootstrap和jQuery UI之间的兼容性存在一些问题,因此我们需要在css中添加一些额外的修复:
.modal
{
overflow: hidden;
}
.modal-dialog{
margin-right: 0;
margin-left: 0;
}
.modal-header{ /* not necessary but imo important for user */
cursor: move;
}
Run Code Online (Sandbox Code Playgroud)
我这样做了:
$("#myModal").modal({}).draggable();
Run Code Online (Sandbox Code Playgroud)
它使我非常标准/基本的模态可拖动。
不知道它是如何/为什么起作用的,但确实如此。