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();

或者你可以使用.filterwhich 会做类似的事情

 $('.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();

不同之处在于过滤器只发生一次,而扩展选择器是完全可重用的。

于 2012-08-20T23:35:51.907 回答