我想要做的是选择我在页面上的下一个元素。我想这样做来创建一个“查看下一篇文章”功能。所以,如果我已经过了第2篇的开头,那么我希望这个函数能带我发帖3.常规的jQuery会问我使用哪个孩子的父母,默认使用第一个实例,但我想选择屏幕顶部下方的帖子。
到目前为止,我可以使用以下方式获取页面的当前位置:
var curPos = $('html').offset();
var Posi = String(curPos.top).replace(/-/g, "");
但是我不知道如何过滤一个函数只选择那个位置以下的元素。
帮助?
答案 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();
区别在于过滤器仅发生一次,而扩展选择器则完全可重复使用。