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 substr エスケープ処理で文字化け
PHP substr 文字化け mb_substrで文字コードを合わせて切り取ればOKって記事は沢
-
-
jQuery 水平スクロール&cssでカスタム可能なスクロールバーなプラグイン
水平スクロール&cssでカスタム可能なスクロールバーなプラグイン jQueryを使ったプラグインは
-
-
Apache 500 Internal Server Error
久しぶりに自宅のローカルサーバーを動かしたら「Server error!」が出てゑっ!? 解決方法
-
-
C言語 バッファオーバーランまで ポインタ考察編
趣旨 ただC言語を勉強してもモチベーションがあがり辛いので、 取り合えずバッファオーバーランを目
-
-
PHPでIE11ユーザーエージェント判定
IE11のユーザーエージェント判定 自作のユーザーエージェント判定クラスでIEの判定が出来てなかっ
-
-
jQuery Googleカレンダー風スケジュール表 タイムテーブル
jQueryでスケジュール表もしくはタイムテーブルっぽいもの 仕事でスケジュール管理のシステム開発
-
-
jQuery 要素の相対位置
jQueryを使って要素の相対位置を調べる Google先生に「jquery offsetLeft
-
-
PHP MySQL 重複行を抽出 ロジックで高速化
PHP MySQL 重複行を抽出 ロジックで高速化 ロジックで高速化は釣りになっているかもしれませ
-
-
jQuery removeClass 特定のクラスを全て削除
特定のクラスを全て削除 フォームを作成した時に、入力項目に不備があった場合は目立つ様にinput属
