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も同じように取れると思います?
もっと簡単な方法が有れば良いのですが、取り敢えずぱっと思いついた処理でした。
関連記事
-
Macで ローカルサーバー構築 Apache設定編
Macで ローカルサーバー環境を構築するまで Apache設定編 ネットでの情報は必要最低限しか載
-
PHPでIE11ユーザーエージェント判定
IE11のユーザーエージェント判定 自作のユーザーエージェント判定クラスでIEの判定が出来てなかっ
-
jQuery 要素の相対位置
jQueryを使って要素の相対位置を調べる Google先生に「jquery offsetLeft
-
jQuery Google画像検索風プラグイン
Google画像検索風プラグイン rc_gallery_open こういったプラグインは数多の開
-
C言語 バッファオーバーランまで ポインタ考察編
趣旨 ただC言語を勉強してもモチベーションがあがり辛いので、 取り合えずバッファオーバーランを目
-
jQuery 水平スクロール&cssでカスタム可能なスクロールバーなプラグイン
水平スクロール&cssでカスタム可能なスクロールバーなプラグイン jQueryを使ったプラグインは
-
Macで ローカルサーバー構築 ローカルネットワーク参加編
Macで ローカルサーバー環境を構築するまで Apache設定編 ネットでの情報は必要最低限しか載
-
jQuery Googleカレンダー風スケジュール表 タイムテーブル
jQueryでスケジュール表もしくはタイムテーブルっぽいもの 仕事でスケジュール管理のシステム開発
-
PHPで指定日の祝日を取得する方法 GoogleAPI利用
google APIを利用して指定日が祝日かどうか取得する 技術的な内容を書く場合は載せてるコード
-
Androidで課金アプリ作製 プロセス間通信予習編
Androidで課金アプリ作製 プロセス間通予習編 課金アプリを作成の際にaidlファイルを利用す