2015-04-04 9 views
5

Oto przykładowe skrzypce, gdy kliknąłeś na czerwone pole i pokazuje współrzędne twojego wskaźnika względem pola.Offset nie aktualizuje się po mousedown wydarzeniu podczas wstrzymania kliknij i przeciągnij

Jak mogę zmienić ten skrypt, aby umożliwić koordynację aktualizacji po kliknięciu i przeciągnięciu? Umożliwienie współrzędnym aktualizacji na żywo, gdy przytrzymuję kliknięcie i poruszam myszą.

http://jsfiddle.net/lonesomeday/5qxtL/2/

Kod z Fiddle:

$('#target').mousedown(function(e) { 
    var offset = $(this).offset(), 
     imgLeft = e.pageX - offset.left, 
     imgTop = e.pageY - offset.top; 

    $('#result').text('Mouse clicked x = ' + imgLeft + ' Y = ' + imgTop); 
}); 

Próbowałem kilka różnych rzeczy, ale nic nie działało tak daleko i nie może znaleźć kolejne pytanie, który jest podobny niezależnie od siebie bez odpowiedzi.

Dzięki

+0

może to pomoże Ci http://stackoverflow.com/questions/4127118/can-you-detect-dragging-in-jquery –

+0

Dziękuję ale Odpowiedź nie jest aktualizowana na żywo w trakcie przeciągania, ale aktualizuje się po kliknięciu. –

Odpowiedz

4

prostu ustawić flagę na myszy w dół, a następnie sprawdzić, czy to na ruch myszy. theres Twój drag:

var mouseDownFlag = false; 
 
$('#target').mousedown(function(e) { 
 
    mouseDownFlag = true; 
 
    var offset = $(this).offset(), 
 
    imgLeft = e.pageX - offset.left, 
 
    imgTop = e.pageY - offset.top; 
 

 
    $('#result').text('Mouse clicked x = ' + imgLeft + ' Y = ' + imgTop); 
 
}); 
 
$('#target').mouseup(function(e) { 
 
    mouseDownFlag = false; 
 
}); 
 
$('#target').mousemove(function(e) { 
 
    if (mouseDownFlag) { 
 
    var offset = $(this).offset(), 
 
     imgLeft = e.pageX - offset.left, 
 
     imgTop = e.pageY - offset.top; 
 
    $('#result').text('Mouse clicked x = ' + imgLeft + ' Y = ' + imgTop); 
 
    } 
 
});
div { 
 
    width: 200px; 
 
    height: 100px; 
 
    position: relative; 
 
    left: 30px; 
 
    top: 15px; 
 
    background-color: #f00; 
 
} 
 
#result { 
 
    background-color: #fff; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="target">My target div</div> 
 
<div id="result"></div>

+1

przeciąganie odbywa się po prostu, gdy mysz porusza się, gdy przycisk myszy jest przytrzymywany. to jest dokładnie to, co robi mój przykład ... przetestuj to. chyba że potrzebujesz współrzędnych, aby zaktualizować, nawet jeśli mysz opuszcza czerwone pole, w takim przypadku daj mi znać i zaktualizuję mój kod. – Banana

+1

Przeprosiny - wygląda na to, czego potrzebuję. Dzięki! (Przyjmuje kiedy pozwala mi to) –

+1

@JackNicholson cieszę się, że mogłem pomóc :) – Banana

Powiązane problemy