在按住时更改光标?

时间:2010-11-02 21:21:01

标签: jquery html

所以我想从

更改光标
#sideBar ul li .template{
 cursor:pointer;
}

可能是游标:移动;当用户拖动时...有什么我可以在jQuery或html中使用,以实现这一点你按住鼠标按钮

5 个答案:

答案 0 :(得分:13)

不要改变你的javascript代码中的css,而是让它只改变一个类,这将使用你想要的任意数量的东西更新你的元素。我添加了一个:hover伪类,因为我不确定cursor是否可以在没有它的情况下工作。

此外,live适用于将来添加的任何元素,而bind则不适用。

的CSS:

#sideBar ul li .template{
 cursor:pointer;
}

#sideBar ul li .template.mouseDown:hover{
 cursor:auto; /* or whatever cursor */
}

使用Javascript:

$("#sideBar ul li .template").live("mousedown", function () {
    $(this).addClass("mouseDown");
}).live("mouseup", function () {
    $(this).removeClass("mouseDown");
});

答案 1 :(得分:2)

您可以尝试使用jQuery将css更改绑定到mousedown事件。然后使用mouseup()在用户完成拖动时更改光标。

e.g:

$(document).ready(function() {
    $('#sideBar ul li .template').mousedown(function() {
        $(this).css('cursor', 'move');
    });
    $('#sideBar ul li .template').mouseup(function() {
        $(this).css('cursor', 'pointer');
    });
});

答案 2 :(得分:2)

当然,你绝对可以做到这一点。 Jquery .mouseDown函数可以设置为处理程序,然后您只需要更改css。继承人example

$('.someElement').mousedown(function()
{
   $(this).css('cursor', 'move');
});
$('.someElement').mouseup(function()
{ 
   $(this).css('cursor', 'pointer');
});

答案 3 :(得分:2)

我不打算重复其他人发布的相同代码,但不应仅仅通过mousedown事件触发正确的拖拽。

在mousedown上,您应该标记可能的拖动并将鼠标坐标保存在mousedown发生的位置,然后附加一个mousemove处理程序。 (这样,当您在拖动过程中只对它们感兴趣时,不会经常跟踪鼠标移动)

只有当保存的mousedown坐标与当前鼠标坐标之间的距离大于某个delta时,mousemove处理程序才应更改拖动元素的CSS类。这可以防止每次短暂/意外点击看起来像拖动。

最后,在drop(mouseup)上,然后根据需要处理drop事件,并清除Possible Drag标志和保存的mousedown坐标。

观看操作系统桌面点击并按住图标,不移动,然后开始移动 - 您将看到此轮廓是它的行为方式。

答案 4 :(得分:1)

尝试这样的事情:

someFunc({
  onstart: function(){
     $(document.body).css( 'cursor', 'move' );
  },

  onstop: function(){
     $(document.body).css( 'cursor', 'auto' );
  }
});

拖动开始时必须触发onstart,结束时必须onstop


如果您要创建自定义拖动功能,则可以使用mousedownmouseup个事件:

$(el)
  .mousedown(function(){
    $(this).css( 'cursor', 'move' );
  })
  .mouseup(function(){
    $(this).css( 'cursor', 'auto' );
  });