table选中单元格区

<script type="text/javascript" src="https://code.jquery.com/jquery-3.1.1.min.js"></script>  
<style>  
.tb{  
    cellspacing:0px;  
    border-spacing: 0px;  
    border:1px solid #000;  
}  
.tb td{  
    width:100px;  
    height:50px;  
    border:1px solid #000;  
}  
th{  
    width:100px;  
    height:50px;  
    border:1px solid #ddd;  
    background: #eee;
}  
.td_bg{  
    background:#FFAA00;  
}  
</style>  
<script>  
//table 鼠标连续选中
var mouse_begin={x:0,y:0};  
var mouse_end={x:0,y:0};  
$(function(){  
    init();  
    $("body").mousedown(function(){  
    $(".tb td").removeClass('td_bg');//点击表格之外的部分,清空所有选中  
    })  
})  
  
function init(){  
    mouseDown();  
    mouseUp();  
	
}  
 
function mouseDown(){  
    $(".tb td").mousedown(function(e){  
        e.stopPropagation();//阻止继承父元素document的mousedown事件  
		
        mouse_begin={
			x:$(this).parent().parent().find("tr").index($(this).parent()[0]), //获得 初始 tr index  (行)
			y:$(this).parent().find("td").index($(this)[0])   				   //获得 初始 td index  (列)
		};  
		
        $(".tb td").removeClass('td_bg');//清空所有选中  
        $(this).addClass('td_bg');  
        mouseMove();   
    });  
}
   
function mouseMove(){  
    $(".tb td").mouseover(function(){  
		
        $(".tb td").removeClass('td_bg');//清空所有选中  
        mouse_end={
			x:$(this).parent().parent().find("tr").index($(this).parent()[0]),  //获得 移入 tr index  (行)
			y:$(this).parent().find("td").index($(this)[0])    					//获得 移入 td index  (列)
		};  
			
        var maxX = mouse_begin.x<mouse_end.x?mouse_end.x:mouse_begin.x;   //判断最大行
        var minX = mouse_begin.x<mouse_end.x?mouse_begin.x:mouse_end.x;   //判断最小行
        var maxY = mouse_begin.y<mouse_end.y?mouse_end.y:mouse_begin.y;   //判断最大列
        var minY = mouse_begin.y<mouse_end.y?mouse_begin.y:mouse_end.y;   //判断最小列
        for(var i=minX;i<=maxX;i++){  
            for(var j=minY;j<=maxY;j++){  
                $(".tb tr:eq("+i+") td:eq("+j+")").addClass('td_bg');  
            }  
        }  
        //$(this).addClass('td_bg');  
    });  
}  
 
function mouseUp(){  
    $(".tb td").mouseup(function(){  
        $(".tb td").unbind('mouseover');  
    });  
}  
</script> 
 
<body>  
        
<table onselectstart="return false;">  
    <thead>
        <tr>
            <th></th>
            <th></th>
            <th></th>
            <th></th>
        </tr>
    </thead>
    <tbody id="tb" class="tb">
        <tr>  
            <td>2</td>
            <td>23</td>
            <td>3</td>
            <td>4</td>  
        </tr>  
        <tr>  
            <td>哈哈</td>
            <td>哈哈</td>
            <td>哈哈</td>
            <td>哈哈</td>  
        </tr>  
        <tr>  
            <td></td>
            <td></td>
            <td></td>
            <td></td>  
        </tr>  
        <tr>  
            <td></td>
            <td></td>
            <td></td>
            <td></td>  
        </tr>  
    </tbody>
</table>  
</body>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值