2011-08-10 96 views
1

說我有這兩個唯一的ID'd div與輸入元素不是唯一的ID'd輸入。jquery從DOM獲取非唯一ID

<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

$('#列1# ('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> 

的JavaScript:

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設計不良的第三方庫可能會導致此問題。我假設HTML是在外部生成的,並且OP被卡住了。 – FlyingDeveloper

0

這是不好的做法,在同一頁上沒有兩個元素應該有相同的ID。更好的方法是將有

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

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

然後你可以找到#COLUMN1,並篩選到.days_0

0

你不應該重複的ID!

然而,這部作品在Chrome瀏覽器:

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

0

正如已經指出:標識必須是唯一的,所以你需要改變你的設計。

例如,你可以使用類,這些並不需要是唯一的:

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

現在你可以使用jQuery通過找到正確的輸入:

$('#column_0 .class_days')