对于Jquery Eric Martin的SimpleModal 1.4.1我想让弹出窗口可以拖动,所以我尝试了这个
$(“#基本模态的内容”)模态({
onShow:function(dialog){
dialog.container.draggable({handle:'div'});
}
});
弹出窗口显示但是我收到“对象不支持方法属性”的错误
我在div中添加了jquery-ui-1.8.10作为脚本ref和class =“ui-widget-content”。
想法?
编辑:删除句柄:'div'没有任何新功能,同样的错误,无法移动对话框
这两个不工作,错误“对象不支持方法的属性”
$('#basic-modal-content').modal({
onShow: function(dialog) { $(dialog.container).draggable(); }
});
$('#basic-modal-content').modal({
onShow: function(dialog) { $(dialog.container).draggable({handle: 'div'}); }
});
console.log($(dialog.container));
Result :[object Object]
答案 0 :(得分:1)
您好我确认我的评论:),请使用:
jQuery(function ($) {
// Load dialog on page load
//$('#basic-modal-content').modal();
// Load dialog on click
$('#basic-modal .basic').click(function (e) {
$('#basic-modal-content').modal({
onShow: function(dialog) {
console.log($(dialog));
$(dialog.container).draggable();
}
});
return false;
});
});
你必须指向一个DOM元素!
编辑:我添加了我使用的条目代码。
答案 1 :(得分:0)
如果您实际上不需要使用JQuery UI库,可以使用我在http://jsfiddle.net/mkUJf/666/的jsfiddle上找到的以下代码 “div#modalbox-container”可以是任何东西。我只是选择使用模态的外部容器。
//make modal draggable
$(function () {
$('body').on('mousedown', 'div#modalbox-container', function () {
$(this).addClass('draggable').parents().on('mousemove', function (e) {
$('.draggable').offset({
top: e.pageY - $('.draggable').outerHeight() / 2,
left: e.pageX - $('.draggable').outerWidth() / 2
}).on('mouseup', function () {
$(this).removeClass('draggable');
});
});
e.preventDefault();
}).on('mouseup', function () {
$('.draggable').removeClass('draggable');
});
});
或者您可以添加如下的jquery插件: 参考:https://css-tricks.com/snippets/jquery/draggable-without-jquery-ui/
(function($) {
$.fn.drags = function(opt) {
opt = $.extend({handle:"",cursor:"move"}, opt);
if(opt.handle === "") {
var $el = this;
} else {
var $el = this.find(opt.handle);
}
return $el.css('cursor', opt.cursor).on("mousedown", function(e) {
if(opt.handle === "") {
var $drag = $(this).addClass('draggable');
} else {
var $drag = $(this).addClass('active-handle').parent().addClass('draggable');
}
var z_idx = $drag.css('z-index'),
drg_h = $drag.outerHeight(),
drg_w = $drag.outerWidth(),
pos_y = $drag.offset().top + drg_h - e.pageY,
pos_x = $drag.offset().left + drg_w - e.pageX;
$drag.css('z-index', 1000).parents().on("mousemove", function(e) {
$('.draggable').offset({
top:e.pageY + pos_y - drg_h,
left:e.pageX + pos_x - drg_w
}).on("mouseup", function() {
$(this).removeClass('draggable').css('z-index', z_idx);
});
});
e.preventDefault(); // disable selection
}).on("mouseup", function() {
if(opt.handle === "") {
$(this).removeClass('draggable');
} else {
$(this).removeClass('active-handle').parent().removeClass('draggable');
}
});
}
})(jQuery);
这两段代码都非常即插即用。
答案 2 :(得分:0)
SimpleModal没有内置的功能...但是您可以使用JQuery。
$j('#simplemodal-container').draggable({ containment: "#masterpageBody" });
simplemodal-container
->是您的容器div id
masterpageBody
->是主body id
。
我们必须使用“围堵”,以免拖到屏幕之外。