1. 程式人生 > >使用jquery.easydrag拖拽外掛的拖拽出界問題

使用jquery.easydrag拖拽外掛的拖拽出界問題

在Iframe框架裡使用了jquery.easydrag.handler.beta2.js外掛,用來拖動DIV塊。

JS程式碼如下: 

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.easydrag.handler.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $("#msgbox").easydrag();
    $("#msgbox").setHandler("msgtitle");
});
</script>

HTML程式碼如下:

<div id='msgbox' style="width:300px;height:150px;solid:1px solid green;">
    <div id='msgtitle' style="height:30px;">title</div>
    msgbox content
</div>

出現問題:

沒有$("#msgbox").setHandler("msgtitle")這一句還好,多了這一句之後,拖拽DIV就沒了個範圍,也就是說可以把DIV無限制的往下拖或者往右拖,哪怕拖得文件出現空白窗口出現滾動條~

比如下圖:藍色塊本是iframe框架的最底部了,可是DIV竟可無限的往下拖拽,出現了一片預期之外的空白。

或許是因為iframe裡的頁面的body高度沒有限制吧,具體原因俺也沒弄清楚。

俺從外掛程式碼入手,修改了$.updatePosition()函式,限制拖動塊的位置不能超出iframe框的範圍.

修改後的程式碼如下:

$.updatePosition = function(e) {
		var pos = $.getMousePosition(e);

		var spanX = (pos.x - lastMouseX);
		var spanY = (pos.y - lastMouseY);
		
		var elemWidth = parseInt($(currentElement).css("width"));
		var elemHeight = parseInt($(currentElement).css("height"));
		var newElemTop = ((lastElemTop + spanY)>(document.body.offsetHeight-elemHeight))?(document.body.offsetHeight-elemHeight):(lastElemTop + spanY);
		var newElemLeft = ((lastElemLeft + spanX)>(document.body.offsetWidth-elemWidth))?(document.body.offsetWidth-elemWidth):(lastElemLeft + spanX);
		if(newElemTop<0)newElemTop=0;
		if(newElemLeft<0)newElemLeft=0;

		$(currentElement).css("top", newElemTop);
		$(currentElement).css("left", newElemLeft);
};

相關推薦

Jquery Tdrag外掛,動的div內有input或者select元素,元素內無法編輯或下拉問題解決

    專案中需要點選一個按鈕,彈出一個對話方塊,由於對話方塊尺寸很大,顯示了很多東西,其實就是div設定了隱藏和顯示,所以為了讓低解析度的電腦也能方便的檢視內容,就想到能否有外掛支援拖動彈出的div,很幸運,前輩們已經有很多外掛,找到一款Tdrag,很好用,連結如下,使用也

使用jquery.easydrag外掛出界問題

在Iframe框架裡使用了jquery.easydrag.handler.beta2.js外掛,用來拖動DIV塊。 JS程式碼如下:  <script type="text/javascript" src="js/jquery.js"></script&

自定義Jquery外掛

新增節點,修改樣式 $("body").append("<div>123</div>"); $("body div").attr("id","box") $("body div").css({"background":"red","width"

自建JQuery外掛

最近由於業務需要,要有拖拽將頁面上控制元件進行一個排序的調整,網上找的控制元件大多不能完美達到預期效果,就自己做了一個小外掛,也記錄一下,畢竟是第一次寫js外掛 外掛程式碼: /** * Created by linxz on 2018/1/8. */ ;(functi

JQuery外掛使用及下載

16/07/08 UPDATE: A new beta version is now available with some bug corrections. Thanks to Randy for the useful feedback! 29/06/08 UPD

jquery實現對div的功能

func function .org absolut 移動 posit center sed fun <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o

前端外掛gridster.js介紹與使用示例

gridster.js是一款基於jquery的前端拖拽外掛,效果相當的不錯,大家可以先看看Demo(http://gridster.net/#intro)(藍色部分的白塊就是了,可以隨便拖動,娛樂性很強)。一、更多示例     gridster.js允許使用者做一些自定義

HTML5 CSS3 經典案例:無外掛上傳圖片 (支援預覽與批量) (一)

上傳基本是專案中經常出現的,一般採用:1、form提交 2、flash3、html5form提交會重新整理頁面,很難做到非同步上傳;flash可能是用得比較多了,因為可以兼顧到幾乎所有的瀏覽器,我之前一直會用jquery的uploadify作為專案中的上傳工具,uploadi

HTML5 CSS3 經典案例:無外掛上傳圖片 (支援預覽與批量) (二)

效果圖1:效果圖2:好了,請允許我把圖片貼了兩遍,方便大家看效果了~可以看出我們的圖片的li的html其實還是挺複雜的,於是我把html文件做了一些修改:<span style="font-size:12px;"><body> <div id="uploadBox"> &

js實現外掛

二、JavaScript實現原理簡述在AS3中,使用startDrag()就能實現拖拽,但是js中,卻沒有此方法,但是也是可以實現的,說穿了,挺簡單的。實現拖拽方法不少,我呢,js功力尚淺,只知道一種實現原理。如下:①滑鼠按下+滑鼠移動 → 拖拽②滑鼠鬆開 → 無拖拽③滑鼠偏移 → 拖拽距離用JavaScri

sortable圖片外掛

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xh

外掛使用說明

使用 初始化draggabilly為一個jQuery外掛 var $draggable = $('.draggable').draggabilly({ // 選項(配置)... })123 使用原生js初始化 var elem = document.querySel

詳細講解html5放技術的區別及優勢

提到拖拽,我們都很熟悉,那麼拖放呢?一字之差,代表的意義是不一樣的,拖拽就是拉著走,拖放就是有拖,有放,我們都知道原生 JS 拖拽效果的缺點:1. 程式碼相對複雜與冗餘2. 僅限於在瀏覽器內的元素間拖放3、不能實現跨頁面的拖放 所以H5就出現了拖放技術,與 JS 原生相比 HTML5 拖放的優勢

HTML5 drag & drop

執行 javascrip eve eight 觸發 元素 padding 軟件 測試 關鍵詞: 1. draggable:規定元素是否可拖動的,draggable=true可拖動 2. dataTransfer:拖拽對象用來傳遞的媒介,使用方式:event.dataTran

android listview動item 改變位置

在packages/apps/Music/src/touchIncepter.java中 該類提供了listview的拖動效果,並提供介面,在程式介面中實現資料的交換即可。 package com.and.DragListvie

div動(圖片驗證碼部分代碼)

type tar clientx document css top 計算 eight 驗證碼 在underside中拖動redbox,box和redbox的橫坐標一致 1 <!doctype html> 2 <html lang="en">

jQuery div網格佈局可動實現自由佈局

此功能參考http://www.datouwang.com/jiaoben/761.html中的資源,感謝! 頁面效果

HTML5 如何實現放‘N‘

HTML5在網絡開發人員需要掌握的所有技術中,看起來最容易造成混淆和潛在問題的是拖拽。 這不是一項新技術,它已存在多年,但許多開發人員仍然執著於基於jQuery的舊方法,以牽連復雜(有時很慢且不準確)的拖放模擬。 現在HTML5包含一個拖放API,您已經有了一個非常簡單的方法來實現無拖放拖放。 理解力學拖放很

Jquery之jqplot圖示外掛使用

jqplot下載地址:http://www.jqplot.com/download/ demo使用: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g

jquery表單驗證外掛

jquery表單驗證外掛 <form id="submit_form" action="/" method="post"> <input name="headPersonPhone" class="easyui-textbox" data-options="required