2009-03-09 17 views
4

スクロールしたページまでの距離に基づいてdiv内のテキストを変更しようとしています。私はjQueryのscrollTopとドキュメントの高さを試してきましたが、これまでのところ希望の結果が得られませんでした。スクロールしたページの深さに基づいてdivを変更します

ページ上の要素の位置を取得し、その要素の位置にスクロールしたら、何かを行うためにjQueryを取得するにはどうすればよいですか?

大変助かりました!

答えて

10

Stackoverflowにも同様の質問があり、これを実現する方法を説明するための小さな例がありました。私は今質問を見つけることができませんが、here is the example。この例では、ページ内の特定の要素にスクロールしてdivを非表示にするまで表示されるdivが表示されます。アイデアが同じであるため、これを変更して必要なものを達成することができます。ここにあなたが必要なもののために変更されたコードは次のとおりです。

$(document).ready(function() { 
    function isScrolledIntoView(elem) { 
     var docViewTop = $(window).scrollTop(); 
     var docViewBottom = docViewTop + $(window).height(); 

     var elemTop = $(elem).offset().top; 
     var elemBottom = elemTop + $(elem).height(); 

     return ((elemBottom >= docViewTop) && (elemTop <= docViewBottom)); 
    } 

    var myelement = $('#formcontainer'); // the element to act on if viewable 
    $(window).scroll(function() { 
     if(isScrolledIntoView(myelement)) { 
      // do something when element is scrolled to and viewable 
     } else { 
      // do something when element is not viewable 
     } 
    }); 
}); 
+0

これはまさに私がやろうとしていたものです。ありがとう! – Cawlin

0

古き良きppk from quirksmode.orgは、要素の位置を見つける方法をお見せすることができます:「あなたはページのサイズを変更し、スクリプトを実行しますので、もしこのスクリプトは、実際の位置を見つけます再び、それは要素の正しい新しい位置を指し示します。

関連する問題