jQuery:获取高于给定“y”位置的元素

你怎么能用优雅的方式用jQuery做到这一点?

z属性(例如:红色背景)应用于div parent每个子级
而他们的位置高于给定的顶部偏移y

我尝试过不同的方式,但我对他们中的任何一个都不满意……
我知道必须有一个简短而优雅的方式来做到这一点……

既然你说你已经尝试了一些方法,并且你只是在寻找更优雅的东西,我会假设你已经找到了偏移部分,我将自己选择offset 。 根据需要修改该部分。 为了优雅,您可以创建一个自定义选择器来检查顶部偏移:

 $.expr[':'].above = function(obj, index, meta, stack) { return $(obj).offset().top < meta[3]; } 

然后你可以这样查询它:

 $('#myParentDiv').find('div:above(100)').css('background-color', 'red'); 

当然,这也可以表达为

 $('#myParentDiv div:above(100)').css('background-color', 'red'); 

或者,正如评论中所指出的那样

 var y = 100; $('#myParentDiv div:above('+y+')').css('background-color', 'red'); 

这样的事情应该完成工作:

 var y = 250, RED = '#F00'; $('#parent > *').css('background-color', function (i, v) { if ($(this).offset().top < y) { return RED; } return v; }); 

选择器'#parent > *'将选择具有id parent的元素的所有直接子parent (不是所有后代)。 我认为这就是你要找的东西,因为你说“适用于parent每一个孩子”。

演示: http : //jsfiddle.net/mattball/87QFU/1/

儿童是动态放置顶部偏移还是他们都有一个共同的CSS级?