2013-04-23 2 views
1

li의 위치를 ​​식별하는 변수를 가질 수 있어야하며 을 사용하여 각 개별 변수 번호에 따라 값을 할당하십시오. li .다음을 사용하여 요소 위치를 기준으로 변수 값을 변경하십시오.

조금 혼란스러워 보일 수 있으므로 조금 더 잘 설명하기 위해 jsfiddle을 작성했습니다. 3 개의 li이 있습니다. 버튼/링크를 클릭하면 을 사용하여 :nth-child 위치에 따라 펼쳐지도록합니다. 그러나 현재 내가 가지고있는 문제는 변수 (itemNumber)가 동일하고 모든 li에 대해 변경되지 않는다는 것입니다.

<ul> 
    <li>Lorem Ipsum 1</li> 
    <li>Lorem Ipsum 2</li> 
    <li>Lorem Ipsum 3</li> 
</ul> 
<a href="#">Click me</a> 

및 JS : 아이디어가 약간 혼란 때문에

var itemNumber = $("ul li").index() + 1; 

$("a").click(function() { 
    $("ul").toggleClass("expanded"); 
    $("ul li").each(function() { 
     $("ul li:nth-child(" + itemNumber + "n)").css("top", itemNumber * 30 + "px"); 
    }); 
}); 

좀 더 그것을 설명 드리겠습니다

여기 내 코드입니다. 기본 전제는 각 li에 대해 변수 itemNumber을 변경해야하며 임의의 수의 li이있을 수 있습니다.

+0

무엇을 어떻게해야을? – gurvinder372

+1

코드는'itemNumber'를 한 번만 설정하므로 값은 항상 '1'입니다. – andyb

답변

1

이 시도 할 수 있습니다 -

$("ul li").each(function (index,element) { 
     $("ul li:nth-child(" + index + "n)").css("top", index * 30 + "px"); 
}); 

또는 대신

$("ul li").each(function (index,element) { 
     $(this).css("top", index * 30 + "px"); 
}); 
+0

이 작업은 매우 효과적입니다. 감사합니다. index()는 0을 기반으로하므로 첫 번째 요소는 1입니다. 감사합니다. 많은 도움을 ^) : –

0

사용 .eq 더 나은 : 당신이 날 '을 클릭'을 클릭하면

var itemNumber = $("ul li").index(); // eq is 0 based index 

$("ul li").each(function (i, v) { 
     $("ul li").eq(itemNumber).css("top", (itemNumber + 1) * 30 + "px"); 
    }); 
+0

이것은 잘 작동하지 않았고 첫 번째 요소에 대해서만 작동했습니다. 왜, 나는 jsfiddle - http://jsfiddle.net/TWCZq/2/ - 당신의 코드와 그것 (Mohammad의 코드 - http://jsfiddle.net/TWCZq/3/)을 가지고 무엇을해야하는지에 대해 확신하지 못했다. –

관련 문제