2015-04-04 27 views
5

İşte bir örnek, kırmızı kutuya tıkladıktan ve işaretçinin kutuya göre koordinatlarını gösterir.Ofset bir tıklama basılı tutulduğunda mousedown olayında güncellenmiyor Ofset ve sürükleyin

Tıklatıp sürüklersem koordinatların güncellenmesine izin vermek için bu komut dosyasını nasıl değiştirebilirim? Tıklamaları tutup fareyi hareket ettirirken koordinatların canlı olarak güncellenmesine izin vermek. Fiddle dan

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

Kodu: Birkaç farklı şeyler denedim ama hiçbir şey ettik

$('#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); 
}); 

bugüne kadar çalışmış ve bir cevap vermeden birbirinden birinden benzer başka soru bulamıyorum.

Teşekkür

+0

bu yardımcı olacaktır olabilir size http://stackoverflow.com/questions/4127118/can-you-detect-dragging-in-jquery –

+0

teşekkür ederiz ama cevap, sürüklediğiniz sırada canlı olarak güncellenmez, bunun yerine tıklamaların görünümü tarafından tamamlandıktan sonra güncellenir. –

cevap

4

basitçe aşağı fare üzerinde bir bayrak ve sonra fare hareket bunun için kontrol edin. senin sürükle gidecekseniz:

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

sürükleme, fare tuşu basılı tutulduğu zaman fare hareket ettiğinde basitçe yapılır. Bu benim örneğimin yaptığı şey ... ... bunu test et. Farenin kırmızı kutuyu terk etmesine rağmen koordinatları güncellemeniz gerekmediği sürece, bu durumda bana haber verin ve kodumu güncelleyeceğim. – Banana

+1

Özür dilerim - buna ihtiyacım var. Teşekkürler! (Bana izin verdiğinde kabul eder) –

+1

@JackNicholson yardımcı olabileceğime sevindim :) – Banana