2012-07-01 17 views
7

Jak mogę w sposób ciągły podnosić pozycję myszy, gdy przycisk jest wciśnięty?Po kliknięciu myszy uzyskasz położenie myszy?

wiem, że mogę zrobić:

<element onclick="functionName(event)"></element> 
<script> 
function functionName(e){ 
e.pageX 
e.pageY 
//do stuff 
} 
</script> 

i wiem, można użyć onMouseDown imprezę, ale jak bym ciągle uzyskać pozycję, gdy przycisk jest wciśnięty jeszcze?

Dziwnie nie mogłem znaleźć tego, gdziekolwiek spojrzałam.

+1

Co masz na myśli przez "ciągły" *? Spróbuj 'onmouseover'. – VisioN

+1

Podczas poruszania myszą chcę stale aktualizować pozycję, ale chcę, aby kliknięto myszką, a nie najechanie na element .. – maxhud

Odpowiedz

15

W każdym razie, polecam korzystania mousemove wydarzenie czeku jeśli which nieruchomość zdarzenie równa 1 (czyli lewy przycisk myszy):

$("element").on("mousemove", function(e) { 
    if (e.which == 1) { 
     console.log(e.pageX + "/" + e.pageY); 
    } 
});​ 

DEMO:http://jsfiddle.net/HBZBQ/

+3

'e.which == 1' jest czystym geniuszem. Dlaczego o tym nie pomyślałem! – Bojangles

5

Here jest JSFiddle dla ty. Musisz zapisać stan przycisku myszy w zmiennej.

jQuery:

$(document).ready(function() { 
    $(document).mousedown(function() { 
     $(this).data('mousedown', true); 
    }); 
    $(document).mouseup(function() { 
     $(this).data('mousedown', false); 
    }); 

    $(document).mousemove(function(e) { 
     if($(this).data('mousedown')) { 
      $('body').text('X: ' + e.pageX + ', Y: ' + e.pageY); 
     } 
    }); 
});​ 

Tutaj mam przechowywania up przycisku myszy lub w dół w stanie document użyciu $(document).data(). Mogłem użyć zmiennej globalnej, ale przechowywanie jej w ten sposób sprawia, że ​​kod jest trochę czystszy.

W funkcji $.mousemove(), tylko to, co chcesz, jeśli mysz nie działa. W powyższym kodzie po prostu drukuję pozycję myszy.

+0

Nice! W IE akceptowana odpowiedź zmienia wartości onmouseover bez zdarzenia mousedown. Ten działa dobrze w każdej przeglądarce, którą wypróbowałem! Dzięki! – pmrotule

Powiązane problemy