2013-03-11 3 views
2

내가 요소 중 일부는 클래스 "부모"JQuery와 리튬 위치는 제로

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

사업부가 간단한 목록을 반환text-align:justify;, ULposition:relative;display: inline-block; position:relative;

을 가지고있다

다음 코드를 사용하여 'li'클래스가있는 모든 li의 위치를 ​​얻습니다. 그리고 나는 그들 중 일부에 클래스를 추가하고자하는 위치보다 100

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

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

이지만 항상 .position() 단계에서 0을 반환합니다 (첫 번째 .parent의 아마 위치?)

내가 할 수있는 방법 그것은 제대로 작동하고 클래스와 모든 리를 올바른 위치를 반환합니까?

+0

이 피델을 확인하십시오. http://jsfiddle.net/krish/Denzu/ – krish

답변

11

필터 요소 위치에 따라, 그리고 추가 클래스 :

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

Perfect! 살고 길고 번영하고 영리한 사람. – contra88

2

당신이 올바른지, 그 첫 번째 부모의 위치를 ​​잡아.

당신은 var position = $('.parent').position();를 사용하여 접근 addClass

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

문제의 콜백을 사용할 수이

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

바이올린에 버그가 있습니다.'class = parent' – krish

+0

그게 효과가 없을까요? – adeneo

+0

이제야 !! – adeneo

1

같은 뭔가를 할 수는 만 컬렉션의 첫 번째 요소의 값을 반환 할 것이다 선택기의 각 인스턴스가 아닌