0

私がやりたいのは、私がページ上にいる下の次の要素を選択することです。これを実行して、「次の投稿を表示」機能を作成したいと思います。したがって、投稿2の開始を過ぎた場合は、関数で投稿3に移動します。従来のjQueryは、親を使用する子を尋ね、デフォルトでは最初のインスタンスを使用しますが、画面上部の下にある次の投稿。

これまでのところ、次を使用してページの現在の位置を取得できます。

var curPos = $('html').offset();
var Posi = String(curPos.top).replace(/-/g, "");

しかし、その位置より下の要素のみを選択するように関数をフィルタリングする方法がわかりません。

ヘルプ?

4

1 に答える 1

1

これは、セレクターを拡張する絶好の機会です。

 $.extend($.expr[':'], {
      pos: function(a,i,m){
          if(!m[3]){return false;}
          // whatever logic you need to determine 
          // if element is below document offset
          // goes here, simply make this function return true or false
          return $(a).offset().top >= parseFloat(m[3]);
      }
 });

これで、次のようなことができるようになります。

 $('.className:pos('+curPos+')').foo();

または、.filter同様のことを行うものを使用できます

 $('.className').filter(function(){
      // whatever logic you need to determine 
      // if element is below document offset
      // goes here, simply make this function return true or false
      return $(this).offset().top >= curPos;
 }).foo();

違いは、セレクターの拡張が完全に再利用可能であるのに対し、フィルターは1回だけ発生することです。

于 2012-08-20T23:35:51.907 に答える