2011-08-10 6 views
2

내가 생성 jqueryui 아코디언과 같은 코드가 있습니다jQuery를 가장 가까운 반환

<div id="treeview-accordion"> 
<h3><a href="#" accindex="0">Basic</a></h3> 
<div> 
    <ul class="navigation-treeview treeview-sanjo" id="yw0"> 
     <li><span style="font-weight:bold"><a href="/sanjo/site/index"> Home</a></span> 
      <ul> 
       <li><span> Profile</span> 
        <ul> 
         <li><span><a href="/sanjo/user/profile"> View Profile</a></span></li> 
         <li><span><a href="/sanjo/user/profile/edit"> Update Profile</a></span></li> 
         <li><span><a href="/sanjo/user/profile/changepassword"> Change Password</a></span></li> 
        </ul> 
       </li> 
      </ul> 
     </li> 
     <li><span> Personnel Management</span> 
      <ul> 
       <li><span><a href="/sanjo/user/admin"> Manage Personnel</a></span> 
       <ul> 
        <li><span><a href="/sanjo/user"> List Personnel</a></span></li> 
        <li><span> Add Personnel</a></span></li> 
       </ul> 
       </li> 
      </ul> 
     </li> 
    </ul> 
</div> 
<h3><a href="#" accindex="0">Basic2</a></h3> 
<div> 
    <ul class="navigation-treeview treeview-sanjo" id="yw01"> 
     <li><span style="font-weight:bold"><a href="/sanjo/site/index2"> Home2</a></span> 
      <ul> 
       <li><span> Profile</span> 
        <ul> 
         <li><span><a href="/sanjo/user/profile2"> View Profile2</a></span></li> 
         <li><span><a href="/sanjo/user/profile/edit2"> Update Profile2</a></span></li> 
         <li><span><a href="/sanjo/user/profile/changepassword2"> Change Password2</a></span></li> 
        </ul> 
       </li> 
      </ul> 
     </li> 
     <li><span> Personnel Management2</span> 
      <ul> 
       <li><span><a href="/sanjo/user/admin2"> Manage Personnel2</a></span> 
       <ul> 
        <li><span><a href="/sanjo/user2"> List Personnel2</a></span></li> 
        <li><span> Add Personnel2</a></span></li> 
       </ul> 
       </li> 
      </ul> 
     </li> 
    </ul> 
</div> 

와 내가 달성하고자이 따라 적절한 'H3'태그의 속성 "accindex"를 얻을 수 있습니다 클릭 한 링크에

예를 들어, "View Profile"을 클릭하고 "h3"(Basic) 아래에 있으므로 accindex 속성 값을 "0"으로 설정하려고합니다.

closest()를 사용하려고했지만 "undefined"가 반환됩니다. 부모님()도 사용할 수 없습니다.

어떻게 이러한 작업을 수행 할 수 있습니까? 친절하게 도와주세요.

감사합니다.

+0

정말 여러분 모두에게 감사드립니다. 다행히 언젠가 나는 모든 사람들처럼 jquery 전문가가 될 수 있습니다. – Macinville

답변

2

먼저 "프로필보기"링크는 h3 안에 있지 않으며 h3의 형제가됩니다. 보십시오이

accindex = $(this).closest("div").prev("h3").find("a").attr("accindex"); 

주를 시도 프로필보기 링크를 클릭

: 위의 코드 this에서 클릭 앵커를 나타냅니다.

+0

감사합니다. Shankar, 팁을 주셔서 너무 감사드립니다! – Macinville

+0

흠 .. 정말 단 한 줄의 코드로이 작업을 수행 할 수 있다는 사실에 놀랐습니다! (그래, 나는 얕다. : p) – Macinville

+0

@Macinville - 덕분에 도움이 된 것을 기쁘게 생각한다. – ShankarSangoli

0

'프로필보기'링크는 <h3>의 하위 항목이 아니기 때문에 parents()closest()이 작동하지 않습니다. 링크를 통해 <ul>, 그 다음에 <div>으로 DOM을 트래버스해야합니다. 그러면 <h3>을 얻을 수 있습니다.

$(this).closest('ul.navigation-treeview').closest('div').prev('h3'); 

<h3> 당신이 원하는 얻어야한다 : this 가정

는 링크입니다.

거기에서 동봉 된 <a> 및 그 accindex를 얻으십시오.

var acc = $(this).closest('ul.navigation-treeview').closest('div').prev('h3').find('a'); 
acc.attr('accindex'); 

DEMO : http://jsfiddle.net/yWsDx/

편집 : $(this).closest('div').prev('h3').find('a')는 괜찮을의 .closest('ul.navigation-treeview')이 필요하지 않습니다.

+0

완벽! 나는 jsfiddle을 시험해 보았고 마치 행동하기를 원했던 것처럼 효과가있었습니다. 내가 옷을 입 자마자 코드로 구현하겠다. D – Macinville

+0

나는 투표를하고 싶었지만 stackoverflow는 나를 못하게했다. 내가 할 수있는 한 빨리 이걸 투표 할거야. 너는 내 하루 로켓을 구 했어. 고마워. – Macinville

+0

@Macinville : 천만에. 기꺼이 도와 드리겠습니다. 여기에 계속 게시하십시오. 결국 최대 투표를 할 담당자가 있습니다 :-) –

0

'찾기'또는 '아동'을 사용해야하는 것 같습니다.

$("h3 a").attr("accindex"); 

또는

$("h3").find("a").attr("accindex"); 

또는

$("h3").children("a").attr("accindex"); 

I :합니다 (H3의 컨텍스트를 사용하는 경우) 그래서

당신이 할 것 앵커 태그의 속성을 얻기 위해 귀하의 클릭 이벤트를 추측하는 것은 앵커 태그를 선택 항목으로 사용하므로 수행해야 할 수도 있습니다.

$(this).attr("accindex"); 

여기에서 '기본'을 클릭하십시오. http://jsfiddle.net/mrchief/M6PcW/ 내가 원하는 HREF에 클래스를 추가하는 마크 업을 수정

$('a.link').click(function() { 
    alert($(this).closest('div').prev('h3').children('a').attr('accindex')); 
    return false; 
}); 

이 (선택을 쉽게하기 위해) : http://jsfiddle.net/hns2H/1/

+0

감사합니다 존, 이제 새로운 것을 배웠습니다! – Macinville

2

는 다음 작업 바이올린입니다.
예. <a class="link" href="/sanjo/user/profile/edit"> Update Profile</a>

+0

필자는 "$ ('a.link')"를 "$ ('a')"로 바꾸 었습니다. 그렇지 않으면 링크로 리디렉션되기 때문입니다. 그 후, 그것은 매력처럼 작동했습니다! – Macinville

+0

나는 거기에 '돌아 오는 거짓'을 가지고 있지 않아야한다 (그리고 그것은 바이올린에서하지 않는다). – Mrchief

+0

Wierd ... 아래의 Manage Personnel 링크를 클릭하면 fiddle에서 Error 404를 반환합니다 ... 나머지는 단지 속성을 알려줍니다 – Macinville

관련 문제