最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

jQuery自定义框并获取框内数据

来源:懂视网 责编:小采 时间:2020-11-27 19:54:10
文档

jQuery自定义框并获取框内数据

jQuery自定义框并获取框内数据:这次给大家带来jQuery自定义框并获取框内数据,jQuery自定义框并获取框内数据的注意事项有哪些,下面就是实战案例,一起来看一下。jquery库: jquery -1.10.2.min.js,jQuery UI - v1.12.1。 jQuery 代码 不多说了,之间上代码。不懂的地方看注释
推荐度:
导读jQuery自定义框并获取框内数据:这次给大家带来jQuery自定义框并获取框内数据,jQuery自定义框并获取框内数据的注意事项有哪些,下面就是实战案例,一起来看一下。jquery库: jquery -1.10.2.min.js,jQuery UI - v1.12.1。 jQuery 代码 不多说了,之间上代码。不懂的地方看注释

这次给大家带来jQuery自定义框并获取框内数据,jQuery自定义框并获取框内数据的注意事项有哪些,下面就是实战案例,一起来看一下。

jquery库:

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

jQuery 代码

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

<script type="text/javascript">
 //鼠标按下时的X Y坐标
 varmouseDownX;
 varmouseDownY;
 //鼠标按下时移动的X Y 坐标
 varmouseMoveX;
 varmouseMoveY;
 //移动的状态
 varisMove =false;
 /*初始化 选择框 */
 functioninit() {
 $("#selected").css("display","none");
 $("#selected").css("top","0");
 $("#selected").css("left","0");
 $("#selected").css("width","0");
 $("#selected").css("height","0");
 }
 $(document).ready(function() {
 init();
 varselectedTD =newArray();//创建被选中表格数组
 varTD = $("td");//获取所有表格信息
 for(vari = 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;
 varselectp = document.getElementById("selected");
 if(isMove) {
 //拖拽的代码,因为实在不想算 xy 了,所以使用了jquery ui
 $("#selected").draggable();
 //这部分是负责画框的时候,实时把框住的表格变色的,(代码和下面的代码重复了)
 varleft = selectp.offsetLeft, top = selectp.offsetTop; width = selectp.offsetWidth, height = selectp.offsetHeight;
 for(vari = 0; i < selectedTD.length; i++) {
 varsl = selectedTD[i].offsetWidth + selectedTD[i].offsetLeft;
 varst = 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{
 //重复的代码,完了再把它抽取出来
 varleft = selectp.offsetLeft, top = selectp.offsetTop; width = selectp.offsetWidth, height = selectp.offsetHeight;
 for(vari = 0; i < selectedTD.length; i++) {
 varsl = selectedTD[i].offsetWidth + selectedTD[i].offsetLeft;
 varst = 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('mousemove');
 })
 //画框
 displaySelected(mouseDownY, mouseDownX, mouseMoveX, mouseMoveY);
 }
 })
 })
 //当鼠标在已经画好的框上时,改变鼠标指针样式,就是十字形了
 $("#selected").mouseenter(function() {
 $("#selected").css("cursor","move");
 });
 });
 functiondisplaySelected(mouseDownY, mouseDownX, mouseUpX, mouseUpY) {
 $("#selected").css("display","block");
 $("#selected").css("top", mouseDownY);
 $("#selected").css("left", mouseDownX);
 varmoveX = mouseMoveX - mouseDownX;
 varmoveY = 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>

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

vuex+Actions使用详解

jQuery实现计时器功能详解

js如何设置禁止表单重复提交

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

jQuery自定义框并获取框内数据

jQuery自定义框并获取框内数据:这次给大家带来jQuery自定义框并获取框内数据,jQuery自定义框并获取框内数据的注意事项有哪些,下面就是实战案例,一起来看一下。jquery库: jquery -1.10.2.min.js,jQuery UI - v1.12.1。 jQuery 代码 不多说了,之间上代码。不懂的地方看注释
推荐度:
标签: 获取 数据 得到
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top