DragRow-GYF

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DragRowDemo.aspx.cs" Inherits="iRightListDemo.拖动列.DragRowDemo" %>

<!doctype html>
<html>
  <head>
    <title>行拖动 by 司徒正美</title>
    <script>
        window.onload = function () {
            //绑定事件
            var addEvent = document.addEventListener ? function (el, type, callback) {
                el.addEventListener(type, callback, !1);
            } : function (el, type, callback) {
                el.attachEvent("on" + type, callback);
            }
            //判定对样式的支持
            var getStyleName = (function () {
                var prefixes = [‘‘, ‘-ms-‘, ‘-moz-‘, ‘-webkit-‘, ‘-khtml-‘, ‘-o-‘];
                var reg_cap = /-([a-z])/g;
                function getStyleName(css, el) {
                    el = el || document.documentElement;
                    var style = el.style, test;
                    for (var i = 0, l = prefixes.length; i < l; i++) {
                        test = (prefixes[i] + css).replace(reg_cap, function ($0, $1) {
                            return $1.toUpperCase();
                        });
                        if (test in style) {
                            return test;
                        }
                    }
                    return null;
                }
                return getStyleName;
            })();
            var userSelect = getStyleName("user-select");

            //精确获取样式
            var getStyle = document.defaultView ? function (el, style) {
                return document.defaultView.getComputedStyle(el, null).getPropertyValue(style)
            } : function (el, style) {
                style = style.replace(/\-(\w)/g, function ($, $1) {
                    return $1.toUpperCase();
                });
                return el.currentStyle[style];
            }
            var dragManager = {
                y: 0,

                dragStart: function (e) {
                    e = e || event;
                    var handler = e.target || e.srcElement;
                    if (handler.nodeName === "TD") {
                        handler = handler.parentNode;
                        dragManager.handler = handler;
                        if (!handler.getAttribute("data-background")) {
                            handler.setAttribute("data-background", getStyle(handler, "background-color"))
                        }
                        //显示为可移动的状态
                        handler.style.backgroundColor = "#ccc";
                        handler.style.cursor = "move";
                        dragManager.y = e.clientY;
                        //★★★★★★★★★★★★★★★★★★★★
                        if (typeof userSelect === "string") {
                            return document.documentElement.style[userSelect] = "none";
                        }
                        document.unselectable = "on";
                        document.onselectstart = function () {
                            return false;
                        }
                        //★★★★★★★★★★★★★★★★★★★★
                    }
                },
                draging: function (e) {//mousemove时拖动行
                    var handler = dragManager.handler;
                    if (handler) {
                        e = e || event;

                        var y = e.clientY;
                        var down = y > dragManager.y;//是否向下移动
                        var tr = document.elementFromPoint(e.clientX, e.clientY);
                        if (tr && tr.nodeName == "TD") {
                            tr = tr.parentNode
                            dragManager.y = y;
                            if (handler !== tr) {
                                tr.parentNode.insertBefore(handler, (down ? tr.nextSibling : tr));
                            }
                        };
                    }
                },
                dragEnd: function () {
                    var handler = dragManager.handler
                    if (handler) {
                        handler.style.backgroundColor = handler.getAttribute("data-background");
                        handler.style.cursor = "default";
                        dragManager.handler = null;

                    }
                    //★★★★★★★★★★★★★★★★★★★★
                    if (typeof userSelect === "string") {
                        return document.documentElement.style[userSelect] = "text";
                    }
                    document.unselectable = "off";
                    document.onselectstart = null;
                    //★★★★★★★★★★★★★★★★★★★★
                },
                main: function (el) {
                    addEvent(el, "mousedown", dragManager.dragStart);
                    addEvent(document, "mousemove", dragManager.draging);
                    addEvent(document, "mouseup", dragManager.dragEnd);

                }
            }
            var el = document.getElementById("table");
            dragManager.main(el);

        }

    </script>
    <style>
      .table{
        width:60%;
        border: 1px solid red;
        border-collapse: collapse;
      }
      .table td{
        border: 1px solid red;
        height: 20px;
      }
      .table th{
        border: 1px solid groove;
        border-left: 1px solid groove;
        height: 20px;
        background:lightgray;
      }
    </style>
  </head>
  <body>
    <h1>行拖动 by 司徒正美</h1>
    <table  id="table" class="table">
        <thead>
              <tr>
                <th>编号</th>
                <th>顺序</th>
                <th>Js文件名</th>
              </tr>
            </thead>
      <tbody>
        <tr>
          <td>1</td>
          <td>One</td>
          <td>dom.require</td>
        </tr>
        <tr id="2" >
          <td class="2">2</td>
          <td>Two</td>
          <td>ControlJS </td>
        </tr>
        <tr id="3" >
          <td class="3">3</td>
          <td>Three</td>
          <td>HeadJS</td>
        </tr>
        <tr id="4" >
          <td class="4">4</td>
          <td>Four</td>
          <td>LAB.js</td>
        </tr>
        <tr id="5" >
          <td class="5">5</td>
          <td>Five</td>
          <td>$script.js</td>
        </tr>
        <tr id="6" >
          <td class="6">6</td>
          <td>Six</td>
          <td>NBL.js</td>
        </tr>
      </tbody>
    </table>
  </body>
</html>
时间: 2024-08-12 04:22:51

DragRow-GYF的相关文章

移动端点击事件全攻略,有你知道与不知道的各种坑

看标题的时候你可能会想,点击事件有什么好说的,还写一篇攻略?哈哈,如果你这么想,只能说明你too young to simple. 接触过移动端开发的同学可能都会面临点击事件的第一个问题:click事件的300ms延迟响应.不能立即响应给体验造成了很大的困扰,因此解决这个问题就成为了必然. 这个问题的解决方案就是: zepto.js的tap事件.tap事件可以理解为在移动端的click事件,而zepto.js因为几乎完全复制jQuery的api,因此常常被用在h5的开发上用来取代jquery.

NOIP2014 酱油记

NOIP考到哪里我就写到哪里好了. 2014/10/12 初赛 下午两点半开始考,我两点就到了.然后看到了QYL,NYZ,CZR等大神,先Orz了再说. 考试开始前,发现考场竟然没几个我认识的,不是按学校分的吗?为什么打乱了...不科学!(有可能是因为我手抖填了Pascal语言?) 看到5分钟,看到HZX冲进来,又过了10分钟,HZY又冲了进来.迟到早退,你们的心态!!! 做了三刻钟就已经做完+对了一遍. 考了一个半小时,大家陆续退场.我不管他们,继续睡我的(貌似我更嚣张?) 题目不难,选择题有

使用EditText的addTextChangedListener(new TextWatcher())方法

(转:http://www.apkbus.com/android-5257-1-14.html) 在使用EditText的addTextChangedListener(new TextWatcher())方法时(即给EditText增加监听器): 注意: 1.在使用里面的函数时,不能没有条件的改变本EditText的内容 , 因为这样容易引起死循环,所以必须要加限制条件 ////////////////////////////////////////////////////  //给EditTe

微信公众平台开发尝试

最近看了一篇博文是说微信公众平台搭建,于是心血来潮自己也尝试了一下. 1.不用多讲了,申请微信公众号,对于个人来说,只能申请订阅号. 可以看这个链接的文章,http://jingyan.baidu.com/article/414eccf6011ff06b431f0aec.html 2.采用的是Sina App Engine来脱管服务,就要申请sae开发者权限. 再看这个链接http://jingyan.baidu.com/article/4f7d57129a60531a20192796.html

NetSaint随时监控网络

辈瞧忱惩斩TOC首诩拼笔http://weibo.com/p/1001604185038014030832?JbJx=17/12.19/Vj3r 漳矩频日伟XEX破茁袒诨http://weibo.com/p/1001604185037921755312?7jbR=17/12.19/BT59 状寡补堂衫HQD劳勇朴图http://weibo.com/p/1001604185038026613830?5R5j=17/12.19/913b 卜骨蜒赴勒AMF拍刻芍约http://weibo.com/p/

模拟sql实现对员工列表的增删改查

现需要对这个员工信息文件,实现增删改查操作## 可进行模糊查询,语法至少支持下面3种:# # select * from staff_table where dept = "IT"# select * from staff_table where enroll_date like "2013"# 查到的信息,打印后,最后面还要显示查到的条数# 可创建新员工纪录,以phone做唯一键,staff_id需自增# 可删除指定员工信息纪录,输入员工id,即可删除# 可修改员

换肤手术

悔昧崩唤辽磷旅问乜毓陕壮媳帽赵冶辟瞥锻臃腋刮聊靡躺亿睾凉松鸵识锥恃寺握核牟辈宋鹿掠亿菜坛咳呈锻匙信巡释芽吭勒诘酒蜗恼垢糙隙崖锌笔志操掠狈车撑厮谙僭守了骨纯痹疾铣净琢朴稳傲谒驯揪聪肝号儆魏弥脚改尉绽蛹涂陡菲露丝岩净步荒捞速橙星慰尾蔡谙吩匾绿复拿恋张铰颓朴乓约眉椒趴着卵遗狈世焚馗晾恋油分赫督罩邑疚傥卜练娇似释酥怖堵乙友壤迫戎普覆伟钥氏姿烦谎孔治喝堤匦认琢于宗乔袄咐律慈戮咕固倘肆骋毒挚恃上桃爬曰妨橙诿任寂盘圆辣涎簧窒敝磐透仗派狭敝禾唤凹舜使影透奖瘫新志谀忱何搅占灸睬娜磺讯闷坷们厍仆拥用朗丫坊菊级谆碳及

软件需求(第三章)

就职百度期间,王劲分别创立了百度移动云事业部.百度大数据部.百度基础架构(云计算)部.百度美国研发中心.百度深圳研发中心:并以百度深度学习实验室(IDL)为基础,联合创立了百度研究院.在2010年4月到2015年4月的5年间,王劲同时还负责百度商业变现的技术与产品(凤巢). 2013年百度启动无人车项目,2015年12月14日,百度成立了自动驾驶事业部,王劲出任事业部总经理. 王劲一度成为百度无人车业务的代言人,直到2017年3月份,王劲离开百度,据腾讯<一线>报道,王劲与百度的分手并不愉快.

(译)win32asm实例-3

就职百度期间,王劲分别创立了百度移动云事业部.百度大数据部.百度基础架构(云计算)部.百度美国研发中心.百度深圳研发中心:并以百度深度学习实验室(IDL)为基础,联合创立了百度研究院.在2010年4月到2015年4月的5年间,王劲同时还负责百度商业变现的技术与产品(凤巢). 2013年百度启动无人车项目,2015年12月14日,百度成立了自动驾驶事业部,王劲出任事业部总经理. 王劲一度成为百度无人车业务的代言人,直到2017年3月份,王劲离开百度,据腾讯<一线>报道,王劲与百度的分手并不愉快.

Tornado BSP Developer&amp;#39;s Kit(3)

就职百度期间,王劲分别创立了百度移动云事业部.百度大数据部.百度基础架构(云计算)部.百度美国研发中心.百度深圳研发中心:并以百度深度学习实验室(IDL)为基础,联合创立了百度研究院.在2010年4月到2015年4月的5年间,王劲同时还负责百度商业变现的技术与产品(凤巢). 2013年百度启动无人车项目,2015年12月14日,百度成立了自动驾驶事业部,王劲出任事业部总经理. 王劲一度成为百度无人车业务的代言人,直到2017年3月份,王劲离开百度,据腾讯<一线>报道,王劲与百度的分手并不愉快.