zoukankan      html  css  js  c++  java
  • 在chrome下鼠标拖动层变文本形状的问题

    学JQ也有一段时间了,想自己写个鼠标拖动层移动的效果(很简单,只是为了练习而已)于是就写下了下面的代码

    复制代码
     1 <!DOCTYPE html>
     2   <html>
     3   <head>
     4     <style>
     5     body{ background-color: #eef; }div{ padding: 20px; }
     6     #abc{
     7       width: 70px;
     8       height: 70px;
     9       position: absolute;
    10       background-color: #000000;
    11      
    12 } 13 #abc:hover{ 14 cursor:default; 15 } 16 </style> 17 <script src="jquery-1.8.3.min.js"></script> 18 </head> 19 <body> 21 <div id="abc"></div> 22 <script> 23 $(function(){ 24 var md=false; 25 var left; 26 var top; 27 var a; 28 var b; 29 $('#abc').mousedown(function(e){ 30 md=true; 31 a=e.clientX - $(this).offset().left; 32 b=e.clientY - $(this).offset().top; 33
    34 }); 35 $('#abc').mouseup(function(){ 36 md=false; 37 }); 38 $(document).mousemove(function(e){ 39 left=e.clientX-a; 40 top=e.clientY-b; 41 if(md){ 42 $('#abc').css({left:left,top:top}); 43 } 44 45 }); 46 }); 47 </script> 48 </body> 49 </html>
    复制代码

    可是问题来了,那就是当我用鼠标拖动层的时候在chrome下鼠标变成了文本选择样式,也就是cursor:text,通过该CSS是没有办法改变的(在IE下没有问题)。然以后找啊找找啊找,终于找到了答案,那就是在$("#abc").mousedown的时候return false;一下就可以解决问题了,代码如下:

    1 $('#abc').mousedown(function(e){
    2                 md=true;
    3                 a=e.clientX - $(this).offset().left;
    4                 b=e.clientY - $(this).offset().top;
    5                 return false;
    6          });

    原因是取消绑定的事件,但是这里我一直不知道是为什么,因为在鼠标点击的时候样子还是原来的饿啊,应该是在鼠标移动的时候才出现的这个原因,那为什么不是在mousemove的时候return false,而是在mousedown的时候return false呢?求高手解答!

  • 相关阅读:
    java8新特性学习五(接口中的默认方法与静态方法)
    java8新特性学习四(Optional类)
    [record]WebLogic域之创建-文本界面
    [转]java 关于httpclient 请求https (如何绕过证书验证)
    数组与串,串的实现,KMP,BF算法
    git
    nginx设置重写规则
    深入PHP 第三章笔记
    进程和线程
    JS 获取 iframe内元素,及iframe与html调用
  • 原文地址:https://www.cnblogs.com/woshikay/p/kay.html
Copyright © 2011-2022 走看看