2011-09-10 15 views
6

me han hecho una demostración en JSFIDDLE
ACTUALIZACIÓNthis version obras en FF pero no cromo ..
ACTUALIZACIÓN 2 Este website parece tener una solución de trabajo.¿Cómo hacer que el cursor del mouse agarre el mouse?

mi Javascript es el siguiente

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

y la CSS es la siguiente

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

Pero ¿por qué no el cursor se convierta en una mano cerrada en el ratón hacia abajo con este código jQuery? ¡Muchas gracias! ¡Cualquier ayuda sería apreciada!

+0

He actualizado la cuestión y también la demo muestra que el jQuery JavaScript no funciona. – Mohammad

+1

Algunos navegadores lo soportan ahora: 'cursor: -webkit-grabbing; cursor: -moz-agarrar; '. –

Respuesta

3

2016 Actualización:

tenía que hacer esto en un plugin de jQuery deslizador que estoy trabajando. Lo que hice fue definir los cursores en CSS, luego agregarlos/eliminarlos en los eventos de toque/mouse con 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') 
}) 
+1

Esto no hubiera funcionado cuando hice la pregunta, me alegro de que funcione ahora. – Mohammad

1

Esto funciona (en FF al menos): http://jsfiddle.net/uZ377/21/

me cambiaron la vivo para unirse, sé por qué, pero en vivo no funcionaba. Además, envolví this en la función jQuery.

0

En realidad parece que hay un problema con el método directo para enlazar los eventos mousedown y mouseup. Al separar los dos elementos, parece funcionar bien.

De todos modos, la parte URL de la propiedad del cursor no es compatible con todos los navegadores. Verifique con Chrome y Firefox, por ejemplo, funciona bien para mí, pero no en Opera, ya que, por lo que yo sé, no es compatible.

+0

no, no está bien. "UnEught TypeError: Object # no tiene el método 'split'" – genesis

+0

En el ejemplo de JSFIDDLE proporcioné otros dos div encima de él como ejemplo para mostrar que la clase proporciona la capacidad del cursor personalizado. Eso funciona en mi navegador "cromo". ¡Gracias! – Mohammad

+0

@genesis: a la derecha, no lo noté porque las manos estaban funcionando bien para mí tanto en Chrome como en FF. –

0

la sintaxis que está utilizando no se introdujo hasta 1.4.3 (documented here), su jsFiddle usa 1.4.2. Su jsFiddle también agrega una clase a this, en lugar de $(this).

Pero tampoco estoy seguro de cómo reacciona el cursor CSS al mousedown y al mouseup: tengo la sensación de que puede ser limitante en algunos navegadores, un poco de violín funciona en mouseup, pero no en mousedown, lo que parece extraño.

+0

Me parece raro que un simple mouse o un evento de clase de mouse up pueda ser tan defectuoso ... – Mohammad

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

realice en css .surface{cursor:crosshair;} Si usted quiere tener ratón hacia abajo/arriba apenas cambiar los cursores para entregar a icono/abajo. Espero que esto ayude.

3

Puede obtener el agarre cursor del ratón con sólo el 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; } 
Cuestiones relacionadas