divには別のdivが含まれている「パネル」というdivがあります。ユーザーが「パネル」をクリック(およびマウスを押したまま)して左右にドラッグすると、内側のdivが左右にドラッグされます。ユーザーがクリックを解除すると、内部divのドラッグが停止されます。ほとんどの場合、これは問題なく動作します。マウスアップでDOM要素のドラッグを停止することができません
私が遭遇している問題は、ユーザーがドラッグしているときにマウスが「パネル」を離れるときです。ドラッグが継続されます。このような状況では、ユーザーがマウスボタンを離すと、マウスアップイベントが「パネル」の外で発生しているため、mouseupイベントにおそらく到達していないため、引き続きドラッグが継続されます。ここで
は、私が使用しているコードです:
$(document).ready(function() {
$('#panel').bind("mousedown", function (e) {
StartDrag(); // Code to drag inner panel goes here
}).bind("mouseup", function (e) {
StopDrag(); // Code to stop drag goes here
}).bind("mouseout", function (e) {
$(this).unbind("mousedown"); // This line doesn't help
StopDrag();
});
});
私は文書全体にStopDrag()関数をバインドする場合、それはstartDragを(と干渉する)。
どこで発生するかにかかわらず、マウスアップ時にStopDrag()関数をトリガーできるようにするにはどうすればよいですか?
私はすでにそれを試しましたが、私はすべてのマウスアップでStopDragイベントを発生させるというアイデアは好きではありません。私のページはユーザーとのやりとりを促しており、よりよい解決策が必要であるようです。 StopDragイベントはDOMを操作し、頻繁に起動されるとパフォーマンスの問題が心配です。 –