jQuery - 在当前位置后选择元素

时间:2012-08-20 22:20:04

标签: javascript jquery

我想要做的是选择我在页面上的下一个元素。我想这样做来创建一个“查看下一篇文章”功能。所以,如果我已经过了第2篇的开头,那么我希望这个函数能带我发帖3.常规的jQuery会问我使用哪个孩子的父母,默认使用第一个实例,但我想选择屏幕顶部下方的帖子。

到目前为止,我可以使用以下方式获取页面的当前位置:

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

但是我不知道如何过滤一个函数只选择那个位置以下的元素。

帮助?

1 个答案:

答案 0 :(得分: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();

区别在于过滤器仅发生一次,而扩展选择器则完全可重复使用。