I want to hold the mouse down and have its cursor change to an image. Then when I release the mouse I want it to rever back to its default.
Here is the code I have thus far. It does not work unless you right click then left-mousedown. Weird.
http://jsfiddle.net/HLLNN/
JQUERY
$("#background").on("mousedown", function () {
$(this).addClass("mouseDown");
}).on("mouseup", function () {
$(this).removeClass("mouseDown");
});
CSS
.mouseDown{
cursor:progress ; // I will eventually want an image file but I used this for brevity
}
#background{
width:500px;
height:500px;
position:absolute;
background-color:red;
}
Well there is 2 things.
First, you have to prevent default. The default behavior is the drag (text selection) wich override your cursor.
$("#background").on("mousedown", function (e) {
e.preventDefault();
$(this).addClass("mouseDown");
}).on("mouseup", function () {
$(this).removeClass("mouseDown");
});
Second, while your mouse is down, you need to move the cursor else it doesnt work. I don't know why and didnt find a fix yet.
Anyway, check this fiddle : http://jsfiddle.net/HLLNN/3/
it seems that sometimes there are strange conditions, where Crome does not properly changes cursor after mousedown. I also have the situatin where cursor has changed shortly only in a moment after mouseup event :(
But the pure example in https://jsfiddle.net/romleon/429rf1tb/ works fine
var moved=document.getElementsByClassName('moved')[0]
moved.onmousedown = function(){
moved.classList.add('do_move')
}
moved.onmouseup = function(){
moved.classList.remove('do_move')
}
.moved{
position: absolute;
width:111px;
height:55px;
background-color: blue;
}
.moved:hover {cursor: pointer;}
.moved.do_move:hover {cursor: crosshair;}
<div class='moved'>
</div>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With