这将是扩展选择器的好时机:
$.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
which 会做类似的事情
$('.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();
不同之处在于过滤器只发生一次,而扩展选择器是完全可重用的。