2011-09-10 10 views
6

Ho fatto un demo su JSFIDDLE
UPDATEthis version opere in FF, ma non cromo ..
UPDATE 2 Questo website sembra avere una soluzione di lavoro.Come far cadere il cursore del mouse sul mouse?

mia Javascript è la seguente

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

e il CSS è la seguente

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

Ma perché il cursore non diventa una mano chiusa sul mouse verso il basso con questo codice jQuery? Grazie mille! Qualsiasi aiuto sarebbe apprezzato!

+0

Ho aggiornato la questione e anche la demo mostra che il jquery javascript non funziona. – Mohammad

+1

Alcuni browser ora supportano questo: 'cursor: -webkit-grabbing; cursore: -moz-grabbing; '. –

risposta

3

2016 Aggiornamento:

Necessario per fare questo in un plugin jQuery cursore su cui sto lavorando. Quello che ho fatto è stato definire i cursori nei CSS, quindi aggiungerli/rimuoverli sugli eventi touch/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

Questo non avrebbe funzionato quando ho fatto la domanda, sono contento che funzioni ora! – Mohammad

1

Questo funziona (in FF almeno): http://jsfiddle.net/uZ377/21/

ho cambiato il live di legare, so perché, ma dal vivo non ha funzionato. Inoltre, ho spostato this nella funzione jQuery.

0

In realtà sembra che ci sia un problema con il metodo live per l'associazione degli eventi mouse e mouseup. Separando i due elementi sembra funzionare bene.

In ogni caso, la parte URL della proprietà del cursore non è supportata in tutti i browser. Controlla con Chrome e Firefox, ad esempio, funziona bene per me, ma non in Opera, poiché per quanto ne so non lo supporta.

+0

no, non è ok. "Uncaught TypeError: Object # non ha alcun metodo 'split'" – genesis

+0

Nell'esempio JSFIDDLE ho fornito altre due div al di sopra di esso come esempio per mostrare che la classe fornisce la capacità del cursore personalizzato. Funziona nel mio browser "chrome". Grazie! – Mohammad

+0

@genesis: giusto, non l'ho notato perché le mani funzionavano comunque bene a me sia in Chrome che in FF. –

0

la sintassi utilizzata non è stata introdotta fino alla versione 1.4.3 (documented here), jsFiddle utilizza 1.4.2. Il tuo jsFiddle aggiunge anche una classe a this, anziché a $(this).

Ma non sono nemmeno sicuro di come il cursore CSS reagisce al mouse e mouseup - Ho la sensazione che potrebbe essere limitante in alcuni browser, un po 'di giocherellando ha funzionato su mouseup, ma non sul mouse - che sembra strano.

+0

Ho appena trovato strano che un semplice mouse down o mouse su Aggiungi evento di classe possa essere così buggato .. – Mohammad

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

Fai in css .surface{cursor:crosshair;} Se si desidera avere il mouse down/up basta cambiare i cursori a portata di mano fino icona/giù. Spero che questo aiuti.

3

È possibile ottenere il grab cursore del mouse con un solo 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; }