如何让鼠标光标抓住鼠标?

时间:2011-09-10 22:45:57

标签: jquery css cursor mouse

我在JSFIDDLE上做了一个演示 更新 this version适用于FF,但不适用于Chrome ..
更新2 website似乎有一个可行的解决方案。

我的Javascript如下

$("#click").live({
  mousedown: function() {
            this.addClass("closed");
        },
  mouseup: function() {
            this.removeClass("closed");
        }
});

和CSS如下

.closed {
    cursor: url(https://mail.google.com/mail/images/2/closedhand.cur), default !important;
}

但是为什么光标在使用这个jQuery代码时鼠标成为一个封闭的手? 非常感谢! 任何帮助将不胜感激!

8 个答案:

答案 0 :(得分:5)

您只能使用CSS获取鼠标光标:

/* Standard cursors */    
.element { cursor: grab; }
.element:active { cursor: grabbing; }

/* Custom cursors */
.element { cursor: url('open-hand.png'), auto; }
.element:active { cursor: url('closed-hand.png'), auto; }

答案 1 :(得分:4)

2016年更新:

需要在我正在研究的jQuery滑块插件中执行此操作。我所做的是在CSS中定义游标,然后使用jQuery在触摸/鼠标事件上添加/删除它们。

的CSS:

.element:hover{
    cursor: move;
    cursor: -webkit-grab;
    cursor: grab;
}
.element.grabbing { 
    cursor: grabbing; 
    cursor: -webkit-grabbing;
}

JS:

$(".element").on("mousedown touchstart", function(e) {
    $(this).addClass('grabbing')
})

$(".element").on("mouseup touchend", function(e) {
    $(this).removeClass('grabbing')
})

答案 2 :(得分:1)

这有效(至少在FF中):http://jsfiddle.net/uZ377/21/

我改变了现场绑定,不知道为什么,但是生活没有用。另外,我在jQuery-function中包装了this

答案 3 :(得分:1)

我把这两件事分开了。

http://jsfiddle.net/genesis/uZ377/23/

但是,它似乎无法在Chrome中运行,但它可以在Firefox中使用。

答案 4 :(得分:1)

$(document).ready(function() {
  $(".surface").mouseup(function(){
        $(".surface").css( "cursor","crosshair");
      }).mousedown(function(){
        $(".surface").css( "cursor","wait");
      });
});

make in css .surface{cursor:crosshair;} 如果您想要鼠标按下/向上,只需将光标更改为手动向上/向下图标。 希望这会有所帮助。

答案 5 :(得分:0)

实际上看起来像是绑定mousedown和mouseup事件的live方法有问题。通过分离这两个元素,它似乎工作正常。

无论如何,所有浏览器都不支持cursor属性的URL部分。以Chrome和Firefox为例,它对我有效,但在Opera中没有,因为据我所知,它不支持它。

答案 6 :(得分:0)

您使用的语法直到1.4.3(documented here)才会被引入,您的jsFiddle使用1.4.2。您的jsFiddle还会向this添加一个课程,而不是$(this)

但是我也不确定光标CSS如何对mousedown和mouseup做出反应 - 我有一种感觉可能在某些浏览器中受到限制,有点摆弄让它在mouseup上运行,但不是mousedown - 这看起来很奇怪

答案 7 :(得分:0)

添加event.preventDefault()后开始在Safari中工作 http://jsfiddle.net/uZ377/49/