2013-06-03 5 views
2

jQuery를 사용하면 주어진 요소 ID 뒤에 특정 유형의 첫 번째 요소를 어떻게 찾을 수 있습니까? 원하는 요소는 바로 다음 요소 일 수도 있고 아닐 수도 있습니다.반드시 형제가 아닌 다음 요소 가져 오기 및 클래스 없음

아래 함수의 목적은 라디오 버튼 다음에 'select'유형의 첫 번째 발생 요소를 숨기는 것입니다. '다음()'기능의

function showDropDown(radioButtonElem) { 
    if(document.getElementById(radioButtonElem.id).checked) { 
     /*$(Get next <select> element after radioButtonElem.id).css("display", "none");*/ 
    } 
} 

<input type="radio" name="radioButtonGroup" value="sfn" id="sfn" onclick="showDropDown(this);"> 
<select id="myDropDown">...</select> 

나의 이해는 단지 동일한 유형의 요소를 발견 한 것입니다. 나는 틀릴 수도있다. 제발 제 문제를 해결하는 방법을 설명해주십시오.

편집 : 의견을 보내 주셔서 감사합니다. 귀하의 의견을 바탕으로, 나는 이것이 효과가있을 것이라고 생각했지만 그렇지 않습니다. 내가 뭘 놓치고 있니? 필요한 요소는 바로 반드시 즉시 형제를 따르지 않는 형제 자매 인 경우

<script> 
    function showDropDown(radioButtonElem) 
    { 
     if(radioButtonElem.checked) 
    { 
     $(radioButtonElem).nextAll('select').first().css('display', 'none'); 
    } 
    } 
</script> 
+1

[http://api.jquery.com/closest/](http://api.jquery.com/closest/) 형제 –

+0

아닌 선택하면 당신은 정확하고. 다음은 당신이 필요로하는 것이 아닙니다. 이 질문은 전에 여러 번 묻지 만 사용되는 상황이 다양하므로 상황에 맞는 것을 찾는 것이 어려울 수 있습니다. 당신이 준 샘플은 선택을 형제로 보여 주며, 그렇지 않다는 말을하므로, 우리가 당신을 위해 복제본을 찾는 것이 어려울 것입니다. 'radioButtonElem.checked' 대신'document.getElementById (radioButtonElem.id) .checked'를하는 이유는 무엇입니까? 그것은 조금 중복 된 것 같습니다. –

+0

"반드시 형제 인 것은 아닙니다"즉 형제가 될 것입니다.하지만 중간에 요소가있을 수 있습니다. – Alnitak

답변

1

, 당신은 .nextAll()은 또한 .first()

$(this).nextAll('select').first() 

다음에 사용할 수 있습니다 - 당신이 그것을 사용한다 - 당신은 jQuery를이 이벤트 핸들링 :

function showDropDown(ev) { 
    if (this.checked) { 
     $(this).nextAll('select').first().hide(); 
    } 
} 

$(':radio').on('click', showDropDown); 

http://jsfiddle.net/alnitak/RsrwV/

0

this을 시도하거나 아래 사용

var getNextTD = $('table.listview').nextAll('td').not('[class]').first(); 
관련 문제