Как заставить курсор мыши сделать захват мыши вниз?
Я сделал демо на JSFIDDLE
обновление эта версия работает в FF, но не chrome..
обновление 2 этой сайт кажется, есть рабочее решение.
мой 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 ответов
обновление 2016:
необходимо сделать это в плагине слайдера jQuery, над которым я работаю. Я определил курсоры в CSS, а затем добавил/удалил их в событиях touch/mouse с помощью 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')
})
вы можете получить захват курсора мыши только с помощью 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; }
это работает (по крайней мере, в FF):http://jsfiddle.net/uZ377/21/
Я изменил live на bind, не знаю почему, но live не работал. Кроме того, я завернул this
в функции jQuery.
Я разделил эти два события.
http://jsfiddle.net/genesis/uZ377/23/
однако, похоже, он не работает в Chrome, но он работает в Firefox.
$(document).ready(function() {
$(".surface").mouseup(function(){
$(".surface").css( "cursor","crosshair");
}).mousedown(function(){
$(".surface").css( "cursor","wait");
});
});
сделать в css .surface{cursor:crosshair;}
Если вы хотите, чтобы мышь вниз / вверх, просто измените курсоры, чтобы передать значок вверх/вниз.
Надеюсь, это поможет.
синтаксис, который вы используете, не был введен до 1.4.3 (документы), ваш jsFiddle использует 1.4.2. Ваш jsFiddle также добавляет класс this
, а не $(this)
.
но я также не уверен в том, как CSS курсора реагирует на mousedown и mouseup - у меня есть ощущение, что это может быть ограничение в некоторых браузерах, немного возиться с ним работает на mouseup, но не mousedown - что кажется странным.
на самом деле похоже, что есть проблема с живым методом привязки событий mousedown и mouseup. Разделяя два элемента, кажется, что он работает нормально.
в любом случае часть URL свойства cursor не поддерживается во всех браузерах. Проверьте с Chrome и Firefox, например, он работает нормально для меня, но не в Opera, так как, насколько я знаю, не поддерживает его.
начал работать в Safari после добавления события.метод preventDefault() http://jsfiddle.net/uZ377/49/