主管要求bootstrap modal 帶有拖拽移動效果.代碼如下:
// bootstrap 模態框窗口 移動擴展, 在bootstrap 初始化後 調用 var btModalMoveEx = function () { function moveEx($this) { var $head = $this.find(".modal-header"), $dialog = $this.find(".modal-dialog"); var move = {isMove: false, left: 0, top: 0}; $this.on("mousemove", function (e) { if (!move.isMove) return; $dialog.offset({top: e.pageY - move.top, left: e.pageX - move.left}); }).on("mouseup", function () { move.isMove = false; }); $head.on("mousedown", function (e) { move.isMove = true; var offset = $dialog.offset(); move.left = e.pageX - offset.left; move.top = e.pageY - offset.top; }); } var old = $.fn.modal; $.fn.modal = function (o, _r) { var $this = $(this); // 標識 是否已經綁定過移動事件了.用於防止重復綁定 if ($this.attr("isbindmv")) return old.call(this, o, _r); $this.attr("isbindmv", "1"); moveEx($this); return old.call(this, o, _r); }; };
CSS
.modal[isbindmv] .modal-header { cursor: move; }
使用方式
$('#editModal').modal({backdrop: 'static'});