- ベストアンサー
jQuery bindでmousemoveが止まらない!どうしたらいい?
- jQueryのbindを使ってmousemoveを実装しようとしていますが、unbindしても止まりません。
- mousedown、mousemove、mouseupを使って、マウス移動距離を表示する機能を作りたいのですが、mousemoveが永遠に続いてしまいます。
- どうすればmousemoveが正常に止まるようになるのでしょうか?お力をお貸しください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
まず最初に言ったように alertが溜まってるだけだと思うよ、alertは溜まるからね 溜まってるのが全部出終わるまで延々で続けるからね mousemoveってブラウザが調子いいと1秒間に60回起きたりするからね 1秒間ドラッグしたら60個alert溜まるのよ だからalertするんじゃなくてどっかにtext()なりで表示するとか FireFoxでFireBugs使ってるならconsole.log()使うとか なんせalert()はtrace()みたいに使うもんじゃないからね $(function(){ $("body").append("<p id='alert'></p>"); $('#main_body').mousedown(function(e){ now_x = e.pageX; $("#alert").text(now_x); $(document).mousemove(function(e){ now_x2 = e.pageX; $("#alert").text(now_x2); }).mouseup(function(){ $("#alert").text("bbbb"); $(document).unbind("mousemove"); }); }); });
その他の回答 (1)
- H240S18B73
- ベストアンサー率65% (190/288)
ひとつには、alert()が溜まってるだけじゃないのかな? ベストコンディションでブラウザが走ってたら mousemoveとか60/秒ぐらい起きる訳だし あとmouseupイベントをリスニングしてるのは #main_bodyなわけだから#main_body上で マウス離さないとダメよね コレってFlashでドラッグ&ドロップできるオブジェクト 作る時にもよくある問題で、オブジェクトがドラッグについてこれずに マウスが外れて意図しないところで落っことしちゃうとか ユーザーがドラッグしたまま外まで行っちゃうってのがあるのよね 対処としてはmousedownはそのオブジェクト自体にリスニングさせるけど mouseupはドキュメントにリスニングさせるとか ドキュメントからのmouseoutもmouseupと同じ扱いにしておくとか mousedownされたところ以外でmouseupされた場合に供えておくカンジ 多分同様の対処はjavascriptでもいると思う
お礼
H240S18B73 様 いつも大変お世話になっております。 お礼が遅くなりまして申し訳ございません。 早速のお返事を頂きましてありがとうございます。 しかし残念ながら、以下のように記述を変更しましても、解決には至りませんでした。 $('#main_body').mousedown(function(e){ now_x = e.pageX; alert(now_x); $(document).mousemove(function(e){ now_x2 = e.pageX; alert(now_x2); }).mouseup(function(){ alert("bbbb"); $(document).unbind("mousemove"); }); }); 大変恐縮ではりますが、もう一度添削をお願いできませんでしょうか。 >多分同様の対処はjavascriptでもいると思う この部分なのですが、イマイチよくわかりません。ここは一体どういう意味なのでしょうか。 お手数ですが、どうぞよろしくお願い致します。
お礼
アドバイスありがとうございます。 原因は別にありましたが、うまくいきました。 ありがとうございました