主管要求bootstrap modal 帶有拖拽移動效果.代碼以下:bootstrap
JSthis
1 // bootstrap 模態框窗口 移動擴展, 在bootstrap 初始化後 調用 2 var btModalMoveEx = function () { 3 function moveEx($this) { 4 var $head = $this.find(".modal-header"), $dialog = $this.find(".modal-dialog"); 5 var move = {isMove: false, left: 0, top: 0}; 6 $this.on("mousemove", function (e) { 7 if (!move.isMove) return; 8 $dialog.offset({top: e.pageY - move.top, left: e.pageX - move.left}); 9 }).on("mouseup", function () { 10 move.isMove = false; 11 }); 12 $head.on("mousedown", function (e) { 13 move.isMove = true; 14 var offset = $dialog.offset(); 15 move.left = e.pageX - offset.left; 16 move.top = e.pageY - offset.top; 17 }); 18 } 19 20 var old = $.fn.modal; 21 $.fn.modal = function (o, _r) { 22 var $this = $(this); 23 // 標識 是否已經綁定過移動事件了.用於防止重複綁定 24 if (!$this.attr("isbindmv")){ 25 $this.attr("isbindmv", "1"); 26 moveEx($this); 27 } 28 return old.call(this, o, _r); 29 }; 30 };
CSS spa
.modal[isbindmv] .modal-header { cursor: move; }
使用方式code
$('#editModal').modal({backdrop: 'static'});