
JQueryを使用して、画像をドラッグで拡大・縮小できるボタンを画像右下に配置しようと考えています。
以下のようなコードを作成したのですが、firefox(3.6.3)だとmouseupによるmousemoveのunbindがうまくいかず、mousemoveが維持されます。
IE8、chrom、operaでは考えたとおりの動きをしますが、ときたまchromでfirefoxと同様の不具合がおきます。
どのようにコードを修正すればよいでしょうか?
------------------------
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style type="text/css">
<!--
div#frame1{
position : absolute;
height : 360px;
width : 240px;
top : 0;
left : 0;
border : 5px solid #000FFF;
}
div#frame1 img#handle{
position : absolute;
bottom : 0;
right : 0;
border : 5px solid #FFF000;
}
//-->
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4. …
<script type="text/javascript">
<!--
$(function(){
$("img#handle").mousedown(function(e){
$("#frame1")
.data("mdownX" , e.clientX)
.data("mdownY" , e.clientY);
$(document).mousemove(function(e){
var width = parseInt($("div#frame1").css("width"),10);
var height = parseInt($("div#frame1").css("height"),10);
$("div#frame1").css({
width : width + (e.pageX - $("#frame1").data("mdownX")) + "px",
height : height + (e.pageY - $("#frame1").data("mdownY")) + "px"
});
$("#frame1")
.data("mdownX" , e.pageX)
.data("mdownY" , e.pageY);
});
});
$(document).mouseup(function(){
$(document).unbind("mousemove");
});
});
//-->
</script>
<title>zoom</title>
</head>
<body>
<div id="frame1">
<img id="handle" src="image.bmp" alt="画像"/>
</div>
</body>
</html>
No.1ベストアンサー
- 回答日時:
確認はIE8とFirefox3.6.3でしかやってないです
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style type="text/css">
div#frame1{
position : absolute;
height : 360px;
width : 240px;
top : 0;
left : 0;
border : 5px solid #000FFF;
}
div#frame1 img#handle{
position : absolute;
bottom : 0;
right : 0;
border : 5px solid #FFF000;
}
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4. …
<script type="text/javascript">
$(function(){
$("#frame1").data({mdownX:-1,mdownY:-1});//-1で初期化(mousemoveでの判定も兼ねる)
$("img#handle").mousedown(function(e){
$("#frame1").data({mdownX:e.pageX,mdownY:e.pageY});
$(this).css('cursor','move');
return false; // falseを返してイベントバブルを停止
});
$(document).mouseup(function(){
$('img#handle').css('cursor','');
$("#frame1").data({mdownX:-1,mdownY:-1});//unbindはしない。位置を-1にリセット
});
$(document).mousemove(function(e){
if($("#frame1").data('mdownX') < 0) return;
var width = $("div#frame1").width();
var height = $("div#frame1").height();
$("div#frame1")
.width(width + parseInt(e.pageX - $("#frame1").data("mdownX")))
.height(height + parseInt(e.pageY - $("#frame1").data("mdownY")));
$("#frame1").data({mdownX:e.pageX,mdownY:e.pageY});
});
});
</script>
<title>zoom</title>
</head>
<body>
<div id="frame1">
<img id="handle" src="image.bmp" alt="画像"/>
</div>
</body>
</html>
steel_grayさん 有難うございます。
chromeとoperaでも問題ありませんでしたでした。
unbindではなく、初期化して条件分岐で解決するわけですね。
JavaやPHPでもよく使う手なのに、unbindにとらわれて全く気がつきませんでした。
まだまだ勉強が必要ですね。
どうも有難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- HTML・CSS 下にスクロールしても、追従するボタンのコードを書いたのですが、ボタンの中の画像が半分しか表示されない 1 2022/04/16 21:31
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jQuery要素 + <select></select...
-
テキストにマウスオーバーで画...
-
jQueryで4枚の画像がフェードア...
-
マウスオーバーにて画像に虫眼...
-
吹き出しに画像とコメントを入...
-
画像のフェードイン・フェード...
-
fancyboxのポップアップ時の画...
-
背景色と連動するスライドショ...
-
交互に入れ替わる画像を複数配置
-
HPにアップした画像を、1秒間...
-
指定時間経過後に画像を一定時...
-
デフォルト非表示にしたい。【t...
-
lightbox 誤作動 JAVA
-
座標を指定して画像を表示する
-
クリックとダブルクリック
-
jcarouselliteについてです。
-
jQueryで特定id以外の下にある...
-
ブラウザで表示されている罫線...
-
どこに画像ファイルを入れるの...
-
折りたたみタグ 他を閉じる(...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
交互に入れ替わる画像を複数配置
-
Colorboxがうまく設置できません
-
jQueryでのドラッグアンドドロ...
-
jQueryで同じクラス名のものを...
-
デフォルト非表示にしたい。【t...
-
ボタンを押すたびに交互に切り...
-
jqueryで、後から追加した画像...
-
アップロードファイルの種類に...
-
jQueryで4枚の画像がフェードア...
-
JavaScriptでの画像切り替えを...
-
画像のフェードイン・フェード...
-
JQueryを使用して、画像をドラ...
-
scrollTo 関数で苦戦してます。
-
Javascript初心者|jQueryの.va...
-
背景色と連動するスライドショ...
-
embed要素のsrc属性の値を変更...
-
fancyboxのポップアップ時の画...
-
onloadの同一ページ内の干渉対策
-
パララックスについて 上下に...
-
「画像クリックで音声再生」を ...
おすすめ情報