jQuery draggable,resizable 要素のサイズがずれる
uiプロパティ以外で要素のサイズ取得を試みる
draggableとresizableを使用し要素のサイズ変更や、移動後のサイズを取得するには
uiプロパティからアクセスするのが一般的かも知れませんが、cssでmarginやpaddingを指定した場合は
cssのプロパティを抜いた値しか取得できません。
何故かは分かりませんが、きっと親切設計なんだと思います。。。
動作環境、jQueryバージョン
jquery-1.9.1
Firefox 27.0.1
要素の横幅が100pxになるようにし、styleを設定した場合
・script
100px伸ばして計200pxになるようにした場合
[対象ノード].resizable({ // 一度に移動できる幅を固定 grid: [ 100, 100 ], stop: function(event, ui) { // ui.size['width'] 188pxが返されます。 // $(this)[0]['clientWidth'] 188pxが返されます。 } });
今回は200pxの値が欲しいので、思った通りの結果になりません。
不足分の12pxを足せばそれで良いのですが、cssのプロパティ値に変更があった場合を考慮しちょっとコードを追加
$('.mn').resizable({ stop: function(event, ui) { var width = getNodeWidth($(this)); //200が返ってきます } }); // pxを外しnumberで返却 function removePx(string) { var s = string.replace("px", ""); return Number(s); }; // ノードの横幅を計算する function getNodeWidth(node) { //jqury1.9以降では一括で各値を取得できるようになりました。 var cscProperty = node.css(['width','margin-left','margin-right','padding-left', 'padding-right']); var width = 0; for (var i in cscProperty) width += removePx(cscProperty[i]); return width; }
今回はwidthだけですが、heightも同じように取れると思います?
もっと簡単な方法が有れば良いのですが、取り敢えずぱっと思いついた処理でした。
関連記事
-
-
PHPでIE11ユーザーエージェント判定
IE11のユーザーエージェント判定 自作のユーザーエージェント判定クラスでIEの判定が出来てなかっ
-
-
Androidで課金アプリ作製 サンプルコード(BILLING V3) 起動編
Androidで課金アプリ作製 サンプルコード起動編 課金アプリの制作の機会が来てしまいました。
-
-
jQuery Google画像検索風プラグイン
Google画像検索風プラグイン rc_gallery_open こういったプラグインは数多の開
-
-
Androidで課金アプリ作製 定期購読サンプルコード編
Androidで課金アプリ作製 定期購読編 In-app Billing v3を使用したアプリ開発
-
-
Macで ローカルサーバー構築 PHP設定編
Macで ローカルサーバー環境を構築するまで PHP設定編 ネットでの情報は必要最低限しか載ってな
-
-
Macで ローカルサーバー構築 Apache設定編
Macで ローカルサーバー環境を構築するまで Apache設定編 ネットでの情報は必要最低限しか載
-
-
Androidで課金アプリ作製 プロセス間通信予習編
Androidで課金アプリ作製 プロセス間通予習編 課金アプリを作成の際にaidlファイルを利用す
-
-
PHP MySQL 重複行を抽出 ロジックで高速化
PHP MySQL 重複行を抽出 ロジックで高速化 ロジックで高速化は釣りになっているかもしれませ
-
-
Macで ローカルサーバー構築 Apache起動編
Macで ローカルサーバー環境を構築するまで Apache起動編 ネットでの情報は必要最低限しか載
-
-
Androidで課金アプリ作製 エラー編(-1008:Unknown error)
Androidで課金アプリ作製 エラー編 In-app Billing v3を使用したアプリ開発で