2011-08-10 5 views
1

은 고유 한 ID 입력이 아닌 입력 요소가있는이 두 고유 한 ID div가 있다고합니다.DOM에서 고유하지 않은 ID를 가져 오는 jquery

<div id="column1" > 
    ... 
    <input checked="checked" type="checkbox" name="days" value="1" id="id_days_0" /> 
</div> 

<div id="column2" > 
    ... 
    <input checked="checked" type="checkbox" name="days" value="1" id="id_days_0" /> 
</div> 

어떻게 최상위 div ID를 기반으로 두 입력을 구별 할 수 있습니까? 분명히

이 작동하지 않습니다 :

$('#id_days_0').attr('checked') 

만 특정 사업부 내에서 하나 개의 입력의 ID에 초점을 맞출 수있는 방법이 있나요? 트릭을 어떻게해야 당신의 선택에 부모를 추가

+1

$를 ('#, 컬럼 # id_days_0 '). attr ('checked ') – Marc

답변

1

, 당신은 항상 당신의 ID가 고유해야하고 클래스를 subsituting하는 것은 좋은 방법이 될 것입니다. 그와

는 다음과 같이 필요한 항목을 참조 할 수 있습니다 말했다되는 :

HTML :

<div id="column1" > 
    First <input checked="checked" type="checkbox" name="days" value="Chk1" id="id_days_0" /> 
</div> 
<div id="column2" > 
    Second <input checked="checked" type="checkbox" name="days" value="Chk2" id="id_days_0" /> 
</div> 

자바 스크립트 :

alert("Check1 = "+$("#column1 #id_days_0").val()+"\n"+"Check2 = "+$("#column2 #id_days_0").val()); 

작품 수있는 이유 먼저 부모를 참조하는 기준으로 객체를 참조하고 그 다음에 자식을 참조하기 때문입니다.

근무 예 : 이미 http://jsfiddle.net/8VqtE/

+0

그 덕분에, 고마워! $ ("# column2 # id_days_0").val() – nnachefski

+0

@nnachefski, 고유해야 할 ID에 대해 읽었습니까? 귀하의 의견에 여전히 고유하지 않은 ID를 사용하고 있습니다 ... – Veger

0

:

$('#column1 #id_days_0') 
$('#column2 #id_days_0') 
+0

이 방법이 효과적 일지 모르지만 같은 페이지에 같은 이름의 ID가 없어야합니다. – Rob

+0

동의하지만 OP가 바보 같은 이유로 붙어있는 제대로 설계되지 않은 제 3 자 라이브러리가이 문제의 원인 일 수 있습니다. 나는 HTML이 외부 적으로 생성되고 OP가 그것에 붙어 있다고 가정하고있다. – FlyingDeveloper

0

이 나쁜 관행이며, 같은 페이지에 두 개의 요소는 동일한 ID가 없어야한다. 더 좋은 방법은

<div id="column1"> 
    <input ... class="days_0" /> 

</div> 
<div id="column2"> 
    <input ... class="days_0" /> 
</div> 

는 그런 다음 #의, 컬럼을 찾을 수 있고, 당신은 아이디의 중복해서는 안 .days_0

0

까지 필터링하는 것입니다!

그러나, 이것은 크롬에서 작동 : 앞서 언급 한 바와 같이

$('#column2').find('#id_days_0')

0

이 적혀있다 : 당신이 당신의 디자인을 변경해야하므로 ID는 , 고유해야합니다. 당신이 클래스를 사용할 수 있습니다 예를 들어

, 이들은 고유 할 필요하지 않습니다 :

<input type="checkbox" name="days" value="1" class="class_days" /> 

지금은 사용 올바른 입력을 찾기 위해 jQuery를 사용할 수 있습니다

$('#column_0 .class_days') 
관련 문제