首页 web前端 js教程 掌握jQuery 实现鼠标画框并对框内数据选中

掌握jQuery 实现鼠标画框并对框内数据选中

May 12, 2018 am 11:24 AM
jquery 鼠标

jQuery 实现鼠标画框并对框内数据选中大家都会吗?本文通过实例代码给大家介绍了jQuery 实现鼠标画框并对框内数据选中的实例代码,非常不错,具有参考借鉴价值,需要的朋友参考下吧。

jquery库:

jquery -1.10.2.min.js,jQuery UI - v1.12.1。

jQuery 代码

不多说了,之间上代码。不懂的地方看注释。

<script type="text/javascript">
 //鼠标按下时的X Y坐标
 var mouseDownX;
 var mouseDownY;
 //鼠标按下时移动的X Y 坐标
 var mouseMoveX;
 var mouseMoveY;
 //移动的状态
 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();//创建被选中表格数组
  var TD = $("td");//获取所有表格信息
  for ( var i = 0; i < TD.length; i++) {
   selectedTD.push(TD[i]);
  }
  $("#tablep").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;
   }
   //鼠标按下并移动时进行判断(拖拽 or 画框)
   $("#tablep").mousemove(function(event) {
    mouseMoveX = event.clientX - $(this).offset().left;
    mouseMoveY = event.clientY - $(this).offset().top;
    var selectp = document.getElementById("selected");
    if (isMove) {
     //拖拽的代码,因为实在不想算 xy 了,所以使用了jquery ui
     $("#selected").draggable();
     //这部分是负责画框的时候,实时把框住的表格变色的,(代码和下面的代码重复了)
     var left = selectp.offsetLeft, top = selectp.offsetTop; width = selectp.offsetWidth, height = selectp.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 {
     //重复的代码,完了再把它抽取出来
     var left = selectp.offsetLeft, top = selectp.offsetTop; width = selectp.offsetWidth, height = selectp.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"; 
       }
      }
     }
     //鼠标抬起结束画框,和拖动
     $("#tablep").mouseup(function() {
      console.log("mouseUpX=" + mouseMoveX + " mouseUpY=" + mouseMoveX);
      isMove = false;
      $(this).unbind(&#39;mousemove&#39;);
     })
     //画框
     displaySelected(mouseDownY, mouseDownX, mouseMoveX, mouseMoveY);
    }
   })
  })
  //当鼠标在已经画好的框上时,改变鼠标指针样式,就是十字形了
  $("#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进行的测试:

<p id="tablep" style="width: 1500px; height: 1500px;top: 100px; left:100px; position: absolute;">
  <p id="selected" style="border:5px dotted rgb(239, 37, 17);position: absolute;display: none;"></p>
  <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>
 <!--表格代码太多所以...-->
 </p>
登录后复制

效果图

这里写图片描述

相关推荐:

实例讲解jquery鼠标悬停导航下划线滑出效果

jquery代码实现鼠标点击文字有趣特效

详解jQuery实现获取table中鼠标click点击位置行号与列号

以上是掌握jQuery 实现鼠标画框并对框内数据选中的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Win11怎么禁用任务栏缩略图预览? 关闭鼠标移动任务栏图标显示缩略图技巧 Win11怎么禁用任务栏缩略图预览? 关闭鼠标移动任务栏图标显示缩略图技巧 Feb 29, 2024 pm 03:20 PM

本文将介绍如何在Win11系统中关闭鼠标移动任务栏图标时显示的缩略图功能。这一功能在默认情况下是开启的,当用户将鼠标指针悬停在任务栏上的应用程序图标上时,会显示该应用程序的当前窗口缩略图。然而,有些用户可能觉得这个功能不太实用或者会干扰到他们的使用体验,因此想要关闭它。任务栏缩略图可能很有趣,但它们也可能分散注意力或烦人。考虑到您将鼠标悬停在该区域的频率,您可能无意中关闭了重要窗口几次。另一个缺点是它使用更多的系统资源,因此,如果您一直在寻找一种提高资源效率的方法,我们将向您展示如何禁用它。不过

惠普推出 Professor 1 三模轻音鼠标:4000DPI、蓝影 RAW3220,首发价 99 元 惠普推出 Professor 1 三模轻音鼠标:4000DPI、蓝影 RAW3220,首发价 99 元 Apr 01, 2024 am 09:11 AM

本站3月31日消息,惠普近日在京东上架了一款Professor1三模蓝牙鼠标,可选黑白奶茶色,首发价99元,需要支付10元定金。据介绍,这款鼠标重量106克,采用人体工程学设计,尺寸为127.02x79.59x51.15mm,可选七档4000DPI,搭载蓝影RAW3220传感器,使用650毫安时电池,号称一次充电续航可以使用2个月。本站附鼠标参数信息如下:

雷蛇 | 宝可梦耿鬼款无线鼠标、鼠标垫上架,套装价 1549 元 雷蛇 | 宝可梦耿鬼款无线鼠标、鼠标垫上架,套装价 1549 元 Jul 19, 2024 am 04:17 AM

本站7月12日消息,雷蛇今日宣布推出雷蛇|宝可梦耿鬼款无线鼠标、鼠标垫。其单品定价分别为1299元和299元,包含两款产品的套装价则为1549元。这并非雷蛇首次推出耿鬼联名的外设产品,2023年雷蛇就推出过耿鬼款的八岐大蛇V2游戏鼠标。此次推出两款新品整体均采用与鬼斯、鬼斯通、耿鬼家族外观类似的深紫色底色,印有这三只宝可梦和精灵球的线条轮廓,中间则为耿鬼这一经典幽灵属性宝可梦的彩色大图。本站发现,雷蛇|宝可梦耿鬼款无线鼠标基于此前发布的毒蝰V3专业版打造。其整体重量为55g,搭载雷蛇第二代FOC

VGN 联名《艾尔登法环》键鼠系列产品上架:菈妮 / 褪色者定制主题,首发 99 元起 VGN 联名《艾尔登法环》键鼠系列产品上架:菈妮 / 褪色者定制主题,首发 99 元起 Aug 12, 2024 pm 10:45 PM

本站8月12日消息,VGN于8月6日推出了联名《艾尔登法环》键鼠系列产品,包含键盘、鼠标和鼠标垫,采用菈妮/褪色者定制主题设计,目前系列产品已上架京东,售价99元起。本站附联名新品信息如下:VGN丨艾尔登法环S99PRO键盘该键盘采用纯铝合金外壳,辅以五层消音结构,使用GASKET板簧结构,拥有单键开槽PCB、原厂高度PBT材质键帽、铝合金个性化背板;支持三模连接和SMARTSPEEDX低延迟技术;接入VHUB,可一站式管理多款设备,首发549元。VGN丨艾尔登法环F1PROMAX无线鼠标该鼠标

雷蛇鼠标驱动在哪个文件夹 雷蛇鼠标驱动在哪个文件夹 Mar 02, 2024 pm 01:28 PM

很多用户不知道自己雷蛇驱动安装的文件去了哪里,这些驱动文件一般都是安装在了系统盘,也就是电脑的C盘,具体位置在programfiles下的RAZE文件夹。雷蛇鼠标驱动在哪个文件夹答:在系统C盘的programfiles下的RAZE文件夹。一般驱动都会安装在C盘,按照位置去找就可以了。雷蛇鼠标驱动安装方法介绍1、下载好官网的文件以后双击运行自己下载的EXE文件。2、等待软件加载。3、在这里可以选择你要安装的哪个驱动。4、选择好以后点击右下角的“安装”就可以了。

多彩推出 M900 Pro 无线游戏鼠标:右手人体工学造型,8K Nano 接收器,199 元起 多彩推出 M900 Pro 无线游戏鼠标:右手人体工学造型,8K Nano 接收器,199 元起 Mar 23, 2024 pm 05:16 PM

本站3月22日消息,Delux多彩推出M900Pro无线游戏鼠标,使用右手人体工学造型,首发预售价199元起。多彩M900Pro使用右手人体工学设计,为中大手用户打造,重63g,并喷有哑光UV涂层。该鼠标使用PAW3395传感器,原配Nano接收器支持8000Hz无线回报率,搭载环诺蓝壳粉点微动并标配RGB充电底座与防滑贴。此外,该鼠标还支持调节LOD、全键自定义、自定义波纹控制与直线修正等功能,配备PTFE脚垫,1.6m伞绳线,并内置接收器收纳仓。本站总结该鼠标具体参数如下:颜色:黑、白、红传

鼠标配重块如何安装 鼠标配重块如何安装 Mar 01, 2024 am 09:20 AM

我们在为了增加自己的手感还有稳定性购买了鼠标配重之后我们该如何安装呢,有些小伙伴也不知道该如何操作,今天就来教大家如何安装这个鼠标配重块。鼠标配重块如何安装:1、鼠标的底下就是吸铁石,我们向下掰开。2、接着我们将配重盒用镊子挑开。3、然后我们把配重块放到鼠标底下。4、最后我们的鼠标就增加了稳定性。

WIN10鼠标失灵不受控制的处理操作方法 WIN10鼠标失灵不受控制的处理操作方法 Mar 27, 2024 pm 12:31 PM

1、按组合键【win+x】打开系统快捷菜单,点击【计算机管理】。2、一次展开:任务计划程序任务计划程序库microsoftwindowstpm。3、在窗口的右侧找到并且禁用【tmp维护任务】即可。

See all articles