2012-02-15 4 views
1

나는이 jQuery를 문이있다.동적 jQuery를 문은

이 부분의 $(currentEle).parent().parent("li").next()null 인 경우이 문장에 .parent().parent("li")을 추가하고 싶습니다.

예 : $(currentEle).parent().parent("li").parent().parent("li").next().click() 등등. 더 명확하게하기 위해 HTML 목록을 추가했습니다. 목록에서 currentEle이 E를 나타내는 li로 설정된 경우 목록에서 다음 요소, 즉 'F'를 선택하고 싶습니다. $(currentEle).parent().parent("li").next()은 null이므로 $(currentEle).parent().parent("li").parent().parent("li")이 작업을 수행합니다. 그렇다면 이것을 어떻게 더 일반적인 것으로 만들 수 있습니까?

<ul> 
     <li>A</li> 
     <li>B 
      <ul> 
       <li>C 
        <ul> 
         <li>D 
          <ul> 
           <li>E</li> 
          </ul> 
         </li> 
        </ul> 
       </li> 
       <li>F</li> 
      </ul> 
     </li> 
    </ul> 
+0

.parent() $ (currentEle)'의 경우. 부모 ("리"). 다음().()'리턴'null', 다음'$ (currentEle) .parent(). 부모를 클릭 ("리") .parent(). parent ("li")'null도 반환됩니다 (null의 부모는 null이됩니다) –

+0

@Secator. ** null의 부모는 예외입니다 ** ... not null – gdoron

+0

이 질문에 jQuery 코드에 @gdoron이 없습니다 :) –

답변

3

업데이트 대답은 :

내가 코드를 단순화하기 위해 E liid을 추가했다.

jQuery를 :

var value = ($('#theE').parents('li').filter(function(index) { 
    return $(this).next('li').length; 
}).next().text()); 

alert(value); //F 

HTML :

<ul> 
     <li>A</li> 
     <li>B 
      <ul> 
       <li>C 
        <ul> 
         <li>D 
          <ul> 
           <li id="theE">E</li> 
          </ul> 
         </li> 
        </ul> 
       </li> 
       <li>F</li> 
      </ul> 
     </li> 
    </ul> 

JSFiddle DEMO

+1

U 그것을 올바르게했습니다! 진짜 빠른! – Siddharth

+0

반대로 F에서 E로 돌아 가면 어떨까요? – Siddharth

+0

@AlSiddharth. 다른 질문입니다. 그러나 규칙은 무엇입니까? – gdoron

1

내가 유 뜻 생각 뭔가를해야만

같은
function main(){ 
    var curr = $(currentEle); 

    while (getParent(curr) != null){ 
     curr = getParent(curr); 
    } 

    getParent(curr).next().click(); 
} 


function getParent(element){ 
    if (element.parent().length > 0 && element.parent().parent('li').length > 0){ 
     return element.parent().parent('li'); 
    } 
    return null; 
} 
+0

$ (currentEle) .parent()도 li이 될 수 있으며 작동하지 않습니다. –

+0

그는 그의 질문을 변경했습니다. 이제 내 코드가 원하는 것을 수행합니다. – gdoron

0

나는 당신이 정말 후있어하는 상위 목록 항목을 찾을 수 li에 의해 필터링 된 .parents() 방법이라고 생각 :

$(currentEle).parents("li").last().next().click(); 

수동으로 각 레벨을 확인하지 않아도 이쪽으로.

+0

거의. 내 업데이트 답변을 읽어보십시오. – gdoron