2012-06-21 2 views
0

나는이 목록을 가지고 있고, 링크가있을 때 나는jQuery, next() 또는 prev() 또는 내가 모르는 기타?

<ul> 
    <li><a class="accordion" href="#">1</a></li>  
    <li><a class="accordion" href="#">2</a></li>  
    <li><a class="accordion" href="#">3</a></li>  
    <li><a class="accordion" href="#">4</a></li>  
    <li><a class="accordion" href="#">5</a></li>  
    <li><a class="accordion" href="#">6</a></li>  
</ul> 

은 내가 다음 내용()와 이전 (과 시도

$('a.accordion').click(function() { 
     var href = $(this).attr("href"); 
     div = $('<div/>', { 
     id: 'intotheli', 
     style: {width:200} 
     }); 
     //console.log(div); 

     // loading content with ajax custom function 
     div.html(loadcontent(div,$(this).attr("href"))); 
     // on this point i want find the li tag that contain the clicked link 
     div.slideDown('slow').appendTo($(this));     

     return false; 
}); 

이 jQuery 코드를 작성 클릭 JQuery와에서 선택 리 요소를 원하는) $ (이)에서하지만 내 문제를 해결하지 않습니다 (어쩌면 내가 잘못 사용)

미리 감사드립니다.

+1

제목을 수정하십시오. 질문과 동일합니다 (예 : "문제"는 무엇입니까? 효과는 무엇입니까? 디버깅은 무엇을 보여 줍니까?) –

+0

사실 약간 막연했습니다. 문제는 jquery의 태그에서 li 태그를 타겟팅 할 수 없다는 것입니다. 코드,하지만 대답은 계몽되었습니다. 대답에 대한 – Goonie

답변

2

, 여기에 내가 이것을 다시 줄 방법은 다음과 같습니다

<ul class="accordion"> 
    <li><a href="#">1</a></li>  
    <li><a href="#">2</a></li>  
    <li><a href="#">3</a></li>  
    <li><a href="#">4</a></li>  
    <li><a href="#">5</a></li>  
    <li><a href="#">6</a></li>  
</ul> 

이 마크 업 작고 정돈한다.

그리고 대신 :

$('.accordion').on("click", "a", function() { 

이 단 하나의 이벤트 핸들러가 조금 물건을 속도, 6이 아니라, 바인딩 의미하지만, 그냥 다시 일을 유지 :

$('a.accordion').click(function() { 

내가 사용하는 거라고 단순한. 이 변경 사항은 새 마크 업에서만 작동합니다.

나머지 코드는 그대로 작동하며 $(this)은 여전히 ​​클릭 된 링크를 나타냅니다.

이있는 li 요소를 얻으려면 $(this).parent('li')을 사용하십시오.

+1

코드 스타일에 대해 "트릭"을 주셔서 감사합니다^_ ^ – Goonie

1

.next().prev() 트래버스 형제. 그들은 다음/이전 형제를 얻습니다. <a>에서 <li>을 받으려면 .parent이 필요합니다. 이 새로운처럼 보이는 것처럼

$('a.accordion').click(function() { 
    var $li = $(this).parent('li'); 
}); 
+0

감사합니다! – Goonie

관련 문제