jQuery 實(shí)現(xiàn)鼠標(biāo)畫框并對框內(nèi)數(shù)據(jù)選中的實(shí)例代碼
jquery庫:
jquery -1.10.2.min.js,jQuery UI - v1.12.1。
jQuery 代碼
不多說了,之間上代碼。不懂的地方看注釋。
<script type="text/javascript"> //鼠標(biāo)按下時(shí)的X Y坐標(biāo) var mouseDownX; var mouseDownY; //鼠標(biāo)按下時(shí)移動(dòng)的X Y 坐標(biāo) var mouseMoveX; var mouseMoveY; //移動(dòng)的狀態(tài) var isMove = false; /*初始化 選擇框 */ function init() { $("#selected").css("display", "none"); $("#selected").css("top", "0"); $("#selected").css("left", "0"); $("#selected").css("width", "0"); $("#selected").css("height", "0"); } $(document).ready(function() { init(); var selectedTD = new Array();//創(chuàng)建被選中表格數(shù)組 var TD = $("td");//獲取所有表格信息 for ( var i = 0; i < TD.length; i++) { selectedTD.push(TD[i]); } $("#tableDiv").mousedown(function(event) { mouseDownX = event.clientX - $(this).offset().left;; mouseDownY = event.clientY - $(this).offset().top; console.log("mouseDownX=" + mouseDownX +" mouseDownY=" + mouseDownY ); if(event.target.id.match(/selected/)) { isMove = true; } //鼠標(biāo)按下并移動(dòng)時(shí)進(jìn)行判斷(拖拽 or 畫框) $("#tableDiv").mousemove(function(event) { mouseMoveX = event.clientX - $(this).offset().left; mouseMoveY = event.clientY - $(this).offset().top; var selectDiv = document.getElementById("selected"); if (isMove) { //拖拽的代碼,因?yàn)閷?shí)在不想算 xy 了,所以使用了jquery ui $("#selected").draggable(); //這部分是負(fù)責(zé)畫框的時(shí)候,實(shí)時(shí)把框住的表格變色的,(代碼和下面的代碼重復(fù)了) var left = selectDiv.offsetLeft, top = selectDiv.offsetTop; width = selectDiv.offsetWidth, height = selectDiv.offsetHeight; for ( var i = 0; i < selectedTD.length; i++) { var sl = selectedTD[i].offsetWidth + selectedTD[i].offsetLeft; var st = selectedTD[i].offsetHeight + selectedTD[i].offsetTop; if (sl > left && st > top && selectedTD[i].offsetLeft < left + width && selectedTD[i].offsetTop < top + height) { if (selectedTD[i].className.indexOf("selected") == -1) { selectedTD[i].className = "selected"; } } else { if (selectedTD[i].className.indexOf("selected") != -1) { selectedTD[i].className = "TD"; } } } } else { //重復(fù)的代碼,完了再把它抽取出來 var left = selectDiv.offsetLeft, top = selectDiv.offsetTop; width = selectDiv.offsetWidth, height = selectDiv.offsetHeight; for ( var i = 0; i < selectedTD.length; i++) { var sl = selectedTD[i].offsetWidth + selectedTD[i].offsetLeft; var st = selectedTD[i].offsetHeight + selectedTD[i].offsetTop; if (sl > left && st > top && selectedTD[i].offsetLeft < left + width && selectedTD[i].offsetTop < top + height) { if (selectedTD[i].className.indexOf("selected") == -1) { selectedTD[i].className = "selected"; } } else { if (selectedTD[i].className.indexOf("selected") != -1) { selectedTD[i].className = "TD"; } } } //鼠標(biāo)抬起結(jié)束畫框,和拖動(dòng) $("#tableDiv").mouseup(function() { console.log("mouseUpX=" + mouseMoveX + " mouseUpY=" + mouseMoveX); isMove = false; $(this).unbind('mousemove'); }) //畫框 displaySelected(mouseDownY, mouseDownX, mouseMoveX, mouseMoveY); } }) }) //當(dāng)鼠標(biāo)在已經(jīng)畫好的框上時(shí),改變鼠標(biāo)指針樣式,就是十字形了 $("#selected").mouseenter(function() { $("#selected").css("cursor", "move"); }); }); function displaySelected(mouseDownY, mouseDownX, mouseUpX, mouseUpY) { $("#selected").css("display", "block"); $("#selected").css("top", mouseDownY); $("#selected").css("left", mouseDownX); var moveX = mouseMoveX - mouseDownX; var moveY = mouseMoveY - mouseDownY; if (moveY < 0) { $("#selected").css("top", event.clientY - $("#table").offset().top); } if (moveX < 0) { $("#selected").css("left", event.clientX - $("#table").offset().left); } $("#selected").css("width", Math.abs(moveX)); $("#selected").css("height", Math.abs(moveY)); } </script>
測試用的html
使用table進(jìn)行的測試:
<div id="tableDiv" style="width: 1500px; height: 1500px;top: 100px; left:100px; position: absolute;"> <div id="selected" style="border:5px dotted rgb(239, 37, 17);position: absolute;display: none;"></div> <table border="1" style=" width: 1500px; height: 1500px;" id="table"> <tr> <td id="1" class="TD"></td> <td id="2" class="TD"></td> <td id="3" class="TD"></td> <td id="4" class="TD"></td> <td id="5" class="TD"></td> <td id="6" class="TD"></td> </tr> <tr> <td id="7" class="TD"></td> <td id="8" class="TD"></td> <td id="9" class="TD"></td> <td id="10" class="TD"></td> <td id="11" class="TD"></td> <td id="12" class="TD"></td> </tr> <tr> <td id="1" class="TD"></td> <td id="2" class="TD"></td> <td id="3" class="TD"></td> <td id="4" class="TD"></td> <td id="5" class="TD"></td> <td id="6" class="TD"></td> </tr> </table> <!--表格代碼太多所以...--> </div>
效果圖
以上所述是小編給大家介紹的jQuery 實(shí)現(xiàn)鼠標(biāo)畫框并對框內(nèi)數(shù)據(jù)選中的實(shí)例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
基于jQuery實(shí)現(xiàn)照片墻自動(dòng)播放特效
這篇文章主要為大家詳細(xì)介紹了基于jQuery實(shí)現(xiàn)照片墻自動(dòng)播放特效,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01JQuery動(dòng)態(tài)給table添加、刪除行 改進(jìn)版
最近需要使用JQuery動(dòng)態(tài)操作table,自己整理了一下,可以添加新行,刪除選中的一行或多行,簡單代碼如下2011-01-01jquery實(shí)現(xiàn)圖片放大點(diǎn)擊切換
這篇文章主要為大家詳細(xì)介紹了jquery實(shí)現(xiàn)圖片放大點(diǎn)擊切換,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06jquery實(shí)現(xiàn)商品拖動(dòng)選擇效果代碼(自寫)
商品拖動(dòng)選擇效果如圖所示,感興趣的朋友已經(jīng)迫不及待想實(shí)現(xiàn)了吧,下面與大家分享下具體的實(shí)現(xiàn)思路及處理程序2013-05-05基于jQuery實(shí)現(xiàn)Ajax驗(yàn)證用戶名是否存在實(shí)例
這篇文章主要為大家詳細(xì)介紹了基于jQuery實(shí)現(xiàn)Ajax驗(yàn)證用戶名是否存在實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-03-03