Come ottenere la posizione del mouse in jQuery senza eventi del mouse?

Mi piacerebbe avere la posizione corrente del mouse ma non voglio usare:

$(document).bind('mousemove',function(e){ $("#log").text("e.pageX: " + e.pageX + ", e.pageY: " + e.pageY); }); 

perché ho solo bisogno di ottenere la posizione e elaborare le informazioni

Non credo che ci sia un modo per interrogare la posizione del mouse, ma è ansible utilizzare un gestore di mousemove che memorizza semplicemente le informazioni, in modo da poter interrogare le informazioni memorizzate.

 jQuery(function($) { var currentMousePos = { x: -1, y: -1 }; $(document).mousemove(function(event) { currentMousePos.x = event.pageX; currentMousePos.y = event.pageY; }); // ELSEWHERE, your code that needs to know the mouse position without an event if (currentMousePos.x < 10) { // .... } }); 

Ma quasi tutto il codice, diverso dal codice setTimeout e così via, viene eseguito in risposta a un evento e la maggior parte degli eventi fornisce la posizione del mouse. Quindi il tuo codice che deve sapere dove il mouse è probabilmente già ha accesso a tali informazioni ...

Non puoi leggere la posizione del mouse in jQuery senza utilizzare un evento. Nota in primo luogo che le proprietà event.pageX e event.pageY esistono su qualsiasi evento, quindi potresti fare:

 $('#myEl').click(function(e) { console.log(e.pageX); }); 

L’altra opzione è usare una chiusura per dare all’intero codice l’accesso a una variabile che viene aggiornata da un gestore di mousemove:

 var mouseX, mouseY; $(document).mousemove(function(e) { mouseX = e.pageX; mouseY = e.pageY; }).mouseover(); // call the handler immediately // do something with mouseX and mouseY 

Ho usato questo metodo:

 $(document).mousemove(function(e) { window.x = e.pageX; window.y = e.pageY; }); function show_popup(str) { $("#popup_content").html(str); $("#popup").fadeIn("fast"); $("#popup").css("top", y); $("#popup").css("left", x); } 

In questo modo avrò sempre la distanza dalla cima salvata in y e la distanza dalla sinistra salvata in x.

Inoltre, mousemove eventi mousemove non vengono triggersti ​​se si esegue drag’n’drop su una finestra del browser. Per tracciare le coordinate del mouse durante il drag’n’drop è necessario colbind il gestore per l’evento document.ondragover e utilizzare la proprietà originalEvent.

Esempio:

 var globalDragOver = function (e) { var original = e.originalEvent; if (original) { window.x = original.pageX; window.y = original.pageY; } } 

mi sono imbattuto in questo, sarebbe bello condividere … cosa ne pensate voi ragazzi.

 $(document).ready(function(){ window.mousemove = function(e){ p = $(e).position(); //remember $(e) - could be any html tag also.. left = e.left; //retieving the left position of the div... top = e.top; //get the top position of the div... } }); 

e boom, ce l’abbiamo ..