js表格,行之间的拖动

这个示例展示了如何使用JavaScript实现HTML表格中行之间的拖动排序功能。通过监听mousedown、mousemove和mouseup事件,实现选中行、鼠标移动时的视觉提示以及释放鼠标时的行插入操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

缺少js库文件


<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="js/jquery.min.js"></script>
<title></title>
<script type="text/javascript">

    //表格排序
    function tableSort()
    {
        var tbody = $('#homepage_carouse_table > tbody');
        var rows = tbody.children();
        var selectedRow;
        var currentCol;
        //压下鼠标时选取行
        rows.mousedown(function(){
            selectedRow = this;
            currentCol = this.rowIndex;
            tbody.css('cursor', 'move');
            return false;    //防止拖动时选取文本内容,必须和 mousemove 一起使用
        });
        rows.mousemove(function(){
            return false;    //防止拖动时选取文本内容,必须和 mousedown 一起使用
        });
        //释放鼠标键时进行插入
        rows.mouseup(function(){                
            if(selectedRow)
            {
                if(selectedRow != this)
                {
                
                    var insertCol = this.rowIndex;
                    if(insertCol <= currentCol){
                        $(this).before($(selectedRow)).removeClass('mouseOver');
                    }else{
                        $(this).after($(selectedRow)).removeClass('mouseOver');
                    }
                    //自己的代码
                }
                tbody.css('cursor', 'default');
                selectedRow = null;                        
            }                                
        });
        //标示当前鼠标所在位置
        rows.hover(
            function(){                    
                if(selectedRow && selectedRow != this)
                {
                    $(this).addClass('mouseOver');    //区分大小写的,写成 'mouseover' 就不行                        
                }                    
            },
            function(){
                if(selectedRow && selectedRow != this)
                {
                    $(this).removeClass('mouseOver');
                }
            }
        );
        
        //当用户压着鼠标键移出 tbody 时,清除 cursor 的拖动形状,以前当前选取的 selectedRow            
        tbody.mouseover(function(event){
            event.stopPropagation(); //禁止 tbody 的事件传播到外层的 div 中
        });    

    }
</script>
</head>
<body onload="tableSort()">

<div class="table_con" align="center">
    <table id="homepage_carouse_table">
    <thead>
        <tr class="tb_title" style="background:#eff3f5; height:45px; border-bottom:none}">
            <td width="30%">标题</td>
            <td width="40%">内容</td>
            <td width="40%">时间</td>
        </tr>
      </thead>  
          <tbody>
 
        <tr>
            <td width="30%">鲜花</td>
            <td width="30%">真漂亮</td>
            <td width="40%">2016-10-31</td>  
        </tr>
        
         <tr>
            <td width="30%">包子</td>
            <td width="30%">很好吃</td>
            <td width="40%">2016-10-30</td>  
        </tr>
        
        
          <tr>
            <td width="30%">南京</td>
            <td width="30%">不错的城市真漂亮</td>
            <td width="40%">2016-10-29</td>  
        </tr>
        
        <tr>
            <td width="30%">面包</td>
            <td width="30%">好难吃</td>
            <td width="40%">2016-10-28</td>  
        </tr>
     
     </tbody>
    </table>

</div>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KunQian_smile

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值