へっぽこエンジニアの日誌

へっぽこエンジニアからのレベルアップをはかる

jQueryのoffsetで正確な値を取得する

jQueryのoffsetを使って、topの値を取得しようとした時、想定と違った値がかえってくることがある。 それは、onReadyで実行した場合。 onReadyでは、画像の読み込みが終わる前に実行されるので、画像の高さ分がずれることがある。

対策としては、javascriptのonloadを使うことだが、onloadとonreadyで競合するので、イベントを追加することで対応する。 具体的なコードとしては、こんな感じ。

1
2
3
jQuery.event.add(window, "load", function(){ 
  var hoge = $("#hoge").offset.top;
});