2012-02-04 4 views
0

Ok, 내 페이지에 수십 가지가있을 것 같아서 재활용하지 않고도 제대로 처리 할 수있는 단일 함수를 작성하려고합니다. 코드를 계속 작성하고 요소의 ID 또는 클래스 이름을 변경하여이 작업을 수행하십시오.

내 HTML 보이는 같은 :

<div class="button_select"> 
    <ul class="button_select_toggle"> 
     <li> 
      <div class="button_select_text">Menu Text</div><div class="button_select_arrow">V</div> 
     </li> 
    </ul> 
    <ul class="button_select_sub" rel="hidden"> 
     <li>Text</li> 
     <li>Text</li> 
     <li>Text</li> 
     <li>Text</li> 
    </ul> 
</div> 

그리고 내가 뭘하려고 현재 클래스와 특히 UL을 얻을 button_select_sub 그래서 나는 그것 확인해 값을 얻을 수있다. 어떤 주어진 페이지에서 이것이 유일하게 될 것이라면 어느 정도 예스는 쉽게 될 것입니다.하지만 이것은 몇 번이나 몇 페이지를 아는 어떤 주어진 페이지에있게 될 것입니다. 그러므로 나는 그들을 다루기위한 보편적 인 기능을하려고 노력하고있다. 어쨌든 내 마지막 시도가 실패했습니다 :

var selectstatus = $(this).siblings('.button_select_sub').attr('rel'); 
alert('status: '+selectstatus); 

하지만 무엇입니까 경고에

"상태 : 정의되지 않은"어쩌면 제대로 형제를 사용하지 않는 메신저? 어쩌면 대안 옵션 일 수도 있습니다. 또한 언급할만한 가치가있는 것은 button_select_sub가 div의 마지막 UL 일 수는 없기 때문입니다.

ive도 시도해 봤는데, children() .. find() .. 그리고 다른 몇 가지, 나는 가능한 그것만 함께 묶을 수 없다는 것을 안다.

+3

'$ (this)'은 무엇을 참조합니까? 전체 js 코드를 게시 할 수 있습니까? – elclanrs

+0

미안 해요. $ (this) div "button_select"를 참조하고 있습니다. – chris

답변

5

$(this)이 "button_select"div를 말하는 경우라면 children이 아닌 siblings을 사용해야한다고 생각합니다.

var selectstatus = $(this).children('.button_select_sub').attr('rel'); 
alert('status: '+selectstatus); 
+0

그게 .. 내 실수는 어린이들에게 쇠사슬에 묶여있는 find()를 사용하고 있었기 때문입니다.), unchained find()를 사용하면 멋지게 작동합니다. 감사합니다. – chris

0

이 시도 : 단일 .button_select_sub 이상이있는 경우 그 팝업 알림의 수를 일으킬 수 있지만

$(document).ready(function(){ 

    var selectstatus = ""; 

    $('.button_select').click(function(){ 

     selectstatus = $(this).children('ul.button_select_sub').attr('rel'); 
     alert('status: '+selectstatus); 
    }); 

}); 

하면, 각 문을 실행 할 수 있습니다.

0

$(this).button-select 인 경우 siblings은 사용해야하는 것이 아닙니다. children 또는 find을 사용해야하지만 여기서 children().find()은 의미가 없습니다. 또한 .button_select_sub이 많으면 each으로 반복하고 각각 rel 값을 추출해야합니다.

$('.button_select') 
    .find('.button_select_sub') 
    .each(function(){ 
     alert($(this).attr('rel')); 
    });