これはおそらく非常に単純な質問ですが、jQuery で要素の正しいオフセットを取得するにはどうすればよいでしょうか?
できます:
$("#whatever").offset().left;
そしてそれは有効です。
しかし、次のようです。
$("#whatever").offset().right
未定義です。
では、jQuery でこれを実現するにはどうすればよいでしょうか。
ありがとう!!
var $whatever = $('#whatever');
var ending_right = ($(window).width() - ($whatever.offset().left + $whatever.outerWidth()));
参照: .outerWidth()
たぶん私はあなたの質問を誤解していますが、オフセットは水平と垂直の 2 つの変数を与えるはずです。これにより、要素の位置が定義されます。だからあなたが探しているのは:
$("#whatever").offset().left
と
$("#whatever").offset().top
要素の正しい境界がどこにあるかを知る必要がある場合は、次を使用する必要があります。
$("#whatever").offset().left + $("#whatever").outerWidth()
グレッグが言ったことへの単なる追加:
$("#whatever").offset().left + $("#whatever").outerWidth()
このコードは、左側に対して正しい位置を取得します。意図が右側に対する相対的な右側の位置を取得することであった場合 (CSSright
プロパティを使用する場合など)、次のようにコードに追加する必要があります。
$("#parent_container").innerWidth() - ($("#whatever").offset().left + $("#whatever").outerWidth())
right
このコードは、最初に CSSでプロパティを設定できない場合に、右側を固定アンカーとして設定する必要があるアニメーションで役立ちます。
実際には、これらはウィンドウが左上の位置からまったくスクロールされていない場合にのみ機能します。
ウィンドウのスクロール値を差し引いて、要素を再配置してページに留まるのに役立つオフセットを取得する必要があります。
var offset = $('#whatever').offset();
offset.right = ($(window).width() + $(window).scrollLeft()) - (offset.left + $('#whatever').outerWidth(true));
offset.bottom = ($(window).height() + $(window).scrollTop()) - (offset.top + $('#whatever').outerHeight(true));
Brendon Crawford はここで (コメントで) 最良の答えを持っていたので、彼がそうするまで答えに移動します (そして少し拡張するかもしれません)。
var offset = $('#whatever').offset();
offset.right = $(window).width() - (offset.left + $('#whatever').outerWidth(true));
offset.bottom = $(window).height() - (offset.top + $('#whatever').outerHeight(true));