2013-03-11 43 views
2

我有一个简单的列表,其中的一些内容有一流的 “父”jQuery的立不败之地返回零

<div> 
    <ul> 
     <li class="parent">text</li> 
     <li>text</li> 
     <li class=parent>text</li> 
     <li>text</li> 
    </ul> 
</div> 

DIVtext-align:justify;ULposition:relative;display: inline-block; position:relative;

我使用下面的代码来获取类'父'的每个li的位置。然后我想补充类其中的一部分,其位置为小于100

var position = $('.parent').position(); 

if (position.left < 100) { 
    $('.parent').addClass('left'); 
} 

但它总是在.position()步骤返回零(可能是第.parent的位置?)

我怎样才能让它正常工作,并让每一个与班的李返回正确的位置?基于位置

+0

检查这个小提琴http://jsfiddle.net/krish/Denzu/ – krish 2013-03-11 04:22:33

回答

11

滤芯,并添加类:

$('.parent').filter(function() { 
    return $(this).position().left < 100; 
}).addClass('left'); 
+0

完美!活得长久,繁荣,聪明的人。 – contra88 2013-03-11 04:42:51

2

你是正确的,它抓住了第一个父的位置。

你可以做这样的事情

$(".parent").each(function() { 
    if ($(this).position().left < 100) 
     $(this).addClass('left'); 
}); 
+0

小提琴有一个错误'class = parent' – krish 2013-03-11 04:24:43

+0

那不行? – adeneo 2013-03-11 04:24:57

+0

现在它会!!!! – adeneo 2013-03-11 04:26:20

1

可以使用addClass

$('.parent').addClass(function() { 
    return $(this).posiition().left <100 ?'left':''; 
}) 

问题回调使用var position = $('.parent').position();你的做法是只会返回集合中的第一个元素的值,而不是每个选择器的实例