2012-01-26 10 views
2

をスクロールしながら:キャプチャ、私はこのページを持っている(ビューポート)

enter image description here

私がスクロールしてる間、私はそのdiv要素にキャプチャしたいです。

私が使用している場合は私が知っている:

if($(document).scrollTop() > $('#div1').position().top) { 
console.log('Div1') 
    } 

...それはDIV1をキャプチャする代わりに、私はすべてのdivのためのような

何かを1つのスニペットを設定するすべてのdivのために、このコードを使用したのだろう。私は、ビューポートのようなものを探しています

var a = // The div i am at 
if($(document).scrollTop() > $(a).position().top) {  
    console.log($(a).attr('id')) 
} 

http://www.appelsiini.net/projects/viewport/3x2.html

プラグインなしでも簡単に2-3行行えますか?

答えて

5

これはすばらしい方法です。 '< ='をピクセルオフセットで最適化して、ユーザーエクスペリエンスを向上させ、パフォーマンスを向上させるためにdivセレクタ($ divs)をコールバックの外に移動することができます。私のバイオリンを見て:http://jsfiddle.net/brentmn/CmpEt/

$(window).scroll(function() { 

    var winTop = $(this).scrollTop(); 
    var $divs = $('div'); 

    var top = $.grep($divs, function(item) { 
     return $(item).position().top <= winTop; 
    }); 
}); 
0

ただループに投げてください。

var list = []; 
$("div").each(function(index) { 
    if($(document).scrollTop() > $(this).position().top) 
     list.push($(this)); 
}); 

alert(list); 

リストには、ビューポート内にあるすべてのdivが含まれます。

0

私はjQueryののInViewプラグインを使用することをお勧めしたい:

https://github.com/protonet/jquery.inview

まあは、InViewイベントに関数をバインドするためにあなたを可能にする、現在視聴しているものは何でもコンテンツを検出プラグインを維持しました。したがって、divが表示されるとすぐに、関連するすべての機能をオフにしてから、ユーザービューを離れたときにもう一度起動することができます。あなたのニーズに最適でしょうか。

+0

は、ありがとう、すべてのdivのidを検出し正常に動作しますどのような種類のプラグインを使用したくはないでしょう。ブレントが答えたように、2行のコードがこのトリックを行うだろう。 – jQuerybeast

+0

ああ、申し訳ありません、私はそれをスキップしている必要があります!ブレントの方法は、その時の道です:) –

0
$(window).scroll(function() { 

     $("#privacyContent div").each(function() { 
      var bottomOffset = ($(this).offset().top + $(this).height()); 
      console.log("Botom=",bottomOffset ,"Win= ", $(window).scrollTop()); 
      if (bottomOffset > $(window).scrollTop()) { 

       $("#menu a").removeClass("active"); 
       // console.log("Div is= ",$(this).attr('id')); 
       $("#menu a[href='#" + $(this).attr('id') + "']").addClass("active"); 
       $(".b").removeClass("fsActive"); 
       var div = $(this); 
       div.find(".b").addClass("fsActive"); 

       return false; 
      } 
     }); 

}); 

私はこのようにそれを行うことは、それは私が望んで実現するプラグインの数千人がありますが、私が述べたように

+0

それは私にブラウザ上にある1つのdivのIDを与える...!他の部門がトップに達すると、それが表示されない...あなたは私を助けてくれますか? –

+0

画面に表示されている各div idが必要です。 –

関連する問題