2012-04-15 3 views
0

내 부모 div의에서jQuery를 각각()는 먼저 발견 반환 값

<div id="btn1"><label class="btn"><input type="submit" value="Submit"/></label></div> 
<div id="btn2"><label class="btn"><input type="button" value="Add"/></label></div> 

jQuery를 기능 ID를 얻으려고 :

$('.btn').each(function() { 
    alert($('.btn').parent().attr("id")); 
}); 

기능 반환을 값 '인 btn1'이 타임스. 'btn1', 'btn2'를 반환해야합니다.

미리 감사드립니다.

답변

3

루프 내부에서 .btn에 대한 선택자를 다시 사용하고 있습니다. 이 this

$('.btn').each(function() { 
    alert($(this).parent().attr("id")); 
}); 

편집을 사용하여 현재 요소를 참조 변경 :

jfriend00

당으로 정말 세의 jQuery 기능은 여기에 호출을 사용하는 이유입니다. jQuery는 작업을 더 잘 수행 할 때만 사용해야합니다.

그리고 이러한 일반적인 시나리오 중 일부에 대한 참조 :. https://stackoverflow.com/a/4652402/803739

+1

'$ (이) .parent() ATTR는 ("ID")는'훨씬, 훨씬 더 빠르고 무언가로 대체 할 수있다 compact'this.parentNode.id'. 여기에는 세 가지 jQuery 함수 호출을 사용할 이유가 없습니다. jQuery는 작업을 더 잘 수행 할 때만 사용해야합니다. – jfriend00

+0

정말로 기술적 인면을 원한다면,'label's에 중첩 된'input's와 같은 그의 코드에 많은 문제가 있습니다. 나는 그저 그의 질문에 직접 대답했습니다. – Terry

+0

그리고 더 나은 대답을 제시하는 코드를 제안했습니다. 당신은 방어 적이 될 필요가 없습니다. 제안에 답변을 포함시킬 수 있습니다. 나는 경쟁적인 답변을 올리는 것을 생각했지만 당신을 향상 시키려고 노력하기로 결정했습니다. 게다가 그것은 누구나 (이 경우 OP와 사용자가 복사 한) 물건을 비효율적으로 사용하는 장소에서 jQuery를 사용하면 내 애완 동물이라고 할 수 있습니다. – jfriend00