2013-05-30 43 views
0

我有以下複選框:有故障檢查變量複選框使用jQuery

<div class="row"> 
    <div class="large-2 columns"><input id="contactTypesCheckbox[12]" name="contactTypesCheckbox[12]" class="contactTypesCheckbox" type="checkbox" value="Billing" />&nbsp;Billing</div> 
    <div class="large-2 columns"><input id="contactTypesCheckbox[15]" name="contactTypesCheckbox[15]" class="contactTypesCheckbox" type="checkbox" value="Creative" />&nbsp;Creative</div> 
... etc ... 
</div> 

的Onload,我做了一些Ajax和我拉下JSON包括示意其複選框應檢查項目的數組。

 $.each(data.contactTypes, function(key, contactType) { 
      // key is = 15 in my test 
      $('#contactTypesCheckbox[key]').prop('checked', true); 
     }); 

因此,我會期待contactTypesCheckbox [15]被檢查,但它不是,沒有錯誤。

我在做什麼錯?

謝謝你這麼多

+0

ID中沒有[]。它只是在名稱 – mplungjan

+0

@mplungjan ....它是有用的,當選擇編號... – Colleen

回答

4

變量內部沒有在Javascript麪條膨脹,你需要連接:

$('#contactTypesCheckbox\\['+key+'\\]').prop('checked', true); 

您還需要躲避括號,否則他們在選擇語法中具有特殊的意義。

也看到這個問題:

What are valid values for the id attribute in HTML?

在ID字符串中使用特殊字符,如[]有關。它允許使用HTML5,但不允許使用HTML4。由於上述需要逃避,最好不要使用它。

+1

其實,它不是工作,因爲'[]'意味着什麼在CSS/JQuery中?像'$('#id [name]')'會選擇一個名爲'#'的對象,其名稱爲'name'? –

+0

@ Karl-AndréGagnon良好的捕獲,我固定,以逃避括號(是的,我認爲這有效)。 – Barmar

+0

謝謝,這工作,我應該考慮擴展問題,但我不會抓住逃生 – Lurk21