jQuery:获取超出给定“y”位置的元素

时间:2010-11-16 15:15:18

标签: jquery positioning

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

  

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

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

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:4)

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

var y = 250,
    RED = '#F00';

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

选择器'#parent > *'将选择ID为parent的元素的所有直接子项(不是所有后代)。我认为这就是你要找的东西,因为你说“应用......给每个div parent的孩子。”

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

答案 2 :(得分:1)

孩子们是动态放置顶部偏移还是他们都有一个共同的css级?

 <script type="text/javascript">
   $("div").children(".offsetelement").css("background-color", "red");
 </script>