2014-07-23 110 views
-2

我有一些jquery代碼,當我試圖選擇一個複選框,當用戶點擊一個div。我的小提琴低於:Jquery獲取範圍內的複選框

http://jsfiddle.net/5PpsJ/

我已經想出是這樣的,但它不是選擇範圍內的複選框:

$('span[name="' + current + '"]').closest('input:checkbox[id="CB_Selected"]').prop('checked', true); 

完整的代碼中的鏈接

我的問題是如何獲得基於其獨特名稱的跨度內的選擇框,並選擇它?

NB我註釋掉jQuery中的隱藏functio0n直觀地看到該複選框是否被選中或不

編輯 我的ID是一樣的,因爲我在ASP.NET的容器內工作,並使用一箇中繼器創建小提琴中顯示的HTML。中繼器內部無法設置項目的ID,因爲中繼器控制不允許我設置ID Eval(datasource)

+0

你的小提琴標記是無效的。一個ID在任何時候都應該是唯一的,在頁面上只有一個***和***只有一個***元素。 – War10ck

+0

您正在使用ASP.NET,那麼您爲什麼沒有正確標記它。還要添加你的轉發器標記。 – Satpal

回答

1

ID是唯一的。所有你需要的是這樣的:

$("#CB_Selected").prop('checked', true); 

事實上,你甚至不需要jQuery的:

document.getElementByID('CB_Selected').checked = true; 

正如其他人所指出的那樣,這將是最好使用一個類,而非ID如果有多個複選框。另外,input不能有子女,所以closest函數不起作用;你的意思是find(兒童)還是siblings

+0

+1請注意,雖然這是正確的,由於OP的無效標記(在多個複選框上使用相同的ID),這是行不通的。 – War10ck

+0

我不認爲我可以做到這一點。我在ASP.net內部工作,並使用中繼器動態創建複選框,因此無法設置複選框的ID,因爲Repeater項目ID不能設置在中繼器內 – user667430

0

而不是給幾個複選框相同的ID - 這會使html失效 - 請使用複選框上的類。更改:

<input id="CB_Selected" type="checkbox" name="ctl00$ContentPlaceHolder_Content_Wraper$ctl01$Repeater_Selected$ctl00$CB_Selected" /> 

要:

<input class="CB_Selected" type="checkbox" name="ctl00$ContentPlaceHolder_Content_Wraper$ctl01$Repeater_Selected$ctl00$CB_Selected" /> 

然後你可以使用代碼:

$('#s_' + this.id).find(':checkbox.CB_Selected').prop('checked', true);