0.先给大家看看效果:

1.创建一个index.html文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        ul{list-style: none}
        li{width:200px;margin:10px;float:left;height: 100px;background: #ccc;border: 1px solid #fff;}
        .selected{border: 1px solid red}
    </style>
    <script src="./jquery-1.12.4.min.js"></script>
</head>
<body>
 
     <ul class='clearfix test' >
         <li><img src="" alt=""></li>
         <li><img src="" alt=""></li>
         <li><img src="" alt=""></li>
         <li><img src="" alt=""></li>
         <li><img src="" alt=""></li>
         <li><img src="" alt=""></li>
         <li><img src="" alt=""></li>
         <li><img src="" alt=""></li>
         <li><img src="" alt=""></li>
         <li><img src="" alt=""></li>
         <div style="clear: both"></div>
</ul>
 
</body>
</html>

  

2.引入插件areaSelect.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
    (function($){
        $.fn.areaSelect=function(option){
            var opt={}
            opt=$.extend(opt,option);
            var _this=$(this);
            _this.on('mousedown',function (e) {
                console.log(_this)
                _this.find('li').removeClass('selected');
                var startTop=e.pageY;
                var startLeft=e.pageX;
                var endTop,endLeft;
                var selectBox=$('<div id="select-box"></div>');
                $('body').append(selectBox);
                selectBox.css({'position':'absolute''top':startTop+'px''left':startLeft+'px''background':'rgba(255,106,23,0.3)''transition':'all 0s''width':0, 'height':0, 'z-index':10})
                $(document).on('mousemove',function (e) {
                    e.preventDefault();
                    endTop=e.pageY;
                    endLeft=e.pageX;
                    if(e.pageY-startTop>0 && e.pageX-startLeft>0){
                        var height=e.pageY-startTop;
                        var width=e.pageX-startLeft;
                        selectBox.css({
                            'width':width+'px',
                            'height':height+'px'
                        })
                    }else if(e.pageY-startTop<0 && e.pageX-startLeft<0) {
                        var height=-(e.pageY-startTop);
                        var width=-(e.pageX-startLeft);
                        selectBox.css({
                            'width':width+'px',
                            'height':height+'px',
                            'top':e.pageY+'px',
                            'left':e.pageX+'px'
                        })
                    }else if(e.pageY-startTop>0 && e.pageX-startLeft<0) {
                        var height=(e.pageY-startTop);
                        var width=-(e.pageX-startLeft);
                        selectBox.css({
                            'width':width+'px',
                            'height':height+'px',
                            'top':startTop+'px',
                            'left':e.pageX+'px'
                        })
                    }else if(e.pageY-startTop<0 && e.pageX-startLeft>0) {
                        var height=-(e.pageY-startTop);
                        var width=(e.pageX-startLeft);
                        selectBox.css({
                            'width':width+'px',
                            'height':height+'px',
                            'top':e.pageY+'px',
                            'left':startLeft+'px'
                        })
                    }
                    _this.find('>li').each(function () {
                        if((startLeft<$(this).offset().left+$(this).width() && $(this).offset().left<endLeft && $(this).offset().top<endTop && $(this).offset().top+$(this).height()>startTop && (e.pageY-startTop>0 && e.pageX-startLeft>0)) ||
                            (endLeft<$(this).offset().left+$(this).width() && $(this).offset().left<startLeft && $(this).offset().top<startTop && $(this).offset().top+$(this).height()>endTop && (e.pageY-startTop<0 && e.pageX-startLeft<0)) ||
                            (endLeft<$(this).offset().left+$(this).width() && $(this).offset().left<startLeft && $(this).offset().top<endTop && $(this).offset().top+$(this).height()>startTop && (e.pageY-startTop>0 && e.pageX-startLeft<0)) ||
                            (startLeft<$(this).offset().left+$(this).width() && $(this).offset().left<endLeft  && $(this).offset().top<startTop && $(this).offset().top+$(this).height()>endTop && (e.pageY-startTop<0 && e.pageX-startLeft>0)) ){
                            $(this).addClass('selected');
                            return;
                        }else {
                            $(this).removeClass('selected');
                        }
                    })
                })
                $(document).on('mouseup',function () {
//                         if(opt.do) opt.do();  执行毁掉函数或者,钩子函数
                    $('#select-box').remove();
                    $(document).unbind('mousemove');
                })
            })
        }
    })(jQuery)

  

3.调用插件

在index.html的body最下面添加下面代码:

1
2
3
4
5
6
<script>
 
    $(function () {
        $('.test').areaSelect()
    })
</script>

  

打开index.html查看效果吧!!!!

js/jq仿window文件夹框选操作插件的更多相关文章

  1. js/jq仿window文件夹移动/剪切/复制等操作

    1.先看下效果吧! 2.在添加一个index.html <!DOCTYPE html> <html lang="en"> <head> < ...

  2. js上传整个文件夹

    文件夹上传:从前端到后端 文件上传是 Web 开发肯定会碰到的问题,而文件夹上传则更加难缠.网上关于文件夹上传的资料多集中在前端,缺少对于后端的关注,然后讲某个后端框架文件上传的文章又不会涉及文件夹. ...

  3. js能否上传文件夹

    文件夹上传:从前端到后端 文件上传是 Web 开发肯定会碰到的问题,而文件夹上传则更加难缠.网上关于文件夹上传的资料多集中在前端,缺少对于后端的关注,然后讲某个后端框架文件上传的文章又不会涉及文件夹. ...

  4. VBS 选择文件夹框

    VBS 选择文件夹框   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 on error resume Next Const  ...

  5. java+js实现展示本地文件夹下的所有图片demo[申明:来源于网络]

    java+js实现展示本地文件夹下的所有图片demo[申明:来源于网络] 地址:http://blog.csdn.net/allgis/article/details/46364875

  6. Python对文件和文件夹的高级操作模块shutil

    shutil模块提供了许多关于文件和文件夹的高级操作. 特别提供了支持文件复制和删除的功能. # 将文件对象fsrc的内容复制到文件类对象fdst.length(可选参数)是缓冲区大小 shutil. ...

  7. python文件、文件夹的相关操作

    python文件.文件夹的相关操作 #1.rename()可以完成对文件的重命名 #rename(需要修改的文件名,新的文件名) import os os.rename("readme.tx ...

  8. idea--忽略隐藏文件、文件夹的设置操作

    文章由来 公司同事在群里问了个问题,如下: 为了大家看清,将图特意贴出来: 这人还删除idae重装了下,哈哈,才到群里问的. 解决思路(按顺序) 1.我让他直接拉会,共享桌面我给看了下,首先是open ...

  9. 原生js实现在表格用鼠标框选并有反选功能

    今天应同学要求,需要写一个像Excel那样框选高亮,并且实现框选区域实现反选功能.要我用原生js写,由于没什么经验翻阅了很多资料,第一次写文章希望各位指出不足!! 上来先建表 <div clas ...

随机推荐

  1. luogu3469 [POI2008]BLO-Blockade

    #include <iostream> #include <cstring> #include <cstdio> using namespace std; type ...

  2. 设计模式之单例模式 Singleton实现

    饿汉式 饿汉式单例模式,static变量会在类装载时初始化,此时也不会涉及多个线程对象访问该对象的问题.虚拟机保证只会装载一次该类,肯定不会发生并发访问的问题, 因此可以省略synchronized关 ...

  3. cinema 4d 包括宝典 --- 改线 循环边 建模布线原则

    cinema 4d 一.视图控制与物体控制 1.摇移      alt+鼠标左键   转圈看物体  改变角度 2.平移  alt +鼠标中键      不改变角度  移动 3.推拉  alt+鼠标右键 ...

  4. SVM用于线性回归

    SVM用于线性回归 方法分析 在样本数据集()中,不是简单的离散值,而是连续值.如在线性回归中,预测房价.与线性回归类型,目标函数是正则平方误差函数: 在SVM回归算法中,目的是训练出超平面,采用作为 ...

  5. TOJ2680: 最大矩阵连乘次数

    2680: 最大矩阵连乘次数  Time Limit(Common/Java):1000MS/10000MS     Memory Limit:65536KByteTotal Submit: 144 ...

  6. 当网络中断的时候,JTA全局事务管理,究竟会不会回滚???

    前言:有人问了我一个问题,就是说在网络中断的时候,JTA的全局事务管理,会不会回滚?当时说会回滚,但没给对方说清楚理由,也不太认同我的观点.现在总结一下. 今天一天都在看文档(也查了一些博客和网站), ...

  7. 刷题总结——解方程(NOIP2014)

    题目: 题目描述 已知多项式方程: a0+a1x+a2x2+…+anxn=0 求这个方程在[1,m]内的整数解(n 和 m 均为正整数). 输入格式 输入共 n+2 行. 第一行包含 2 个整数 n. ...

  8. mac/linux自带定时任务执行crontab的使用

    1.编辑定时任务信息 sudo crontab -e #以root用户创建,也可以 -u 参数 编辑内容如下: 频率表达式分别对应为 分.时.日.周.月 LANG=zh_CN.UTF-8 */30 * ...

  9. nginx 变量 + lua

    nginx变量使用方法详解(8) nil.null与ngx.null 发现一个nginx LUA开发Web App的框架 nginx是个好东西, nginx的openrtsy发行版本更是个好东西. 今 ...

  10. net9:图片变成二进制流存入XML文档,从XML文档中读出图片以及从XML文档中读取并创建图片文件

    原文发布时间为:2008-08-10 -- 来源于本人的百度文章 [由搬家工具导入] fileToXml类: using System;using System.Data;using System.C ...