我有一個表,它的行包含單選按鈕組,像這樣:無法設置=「選中」通過jQuery
<td class="usegsm">
<input type="hidden" class="use-gsm" value='<%# DataBinder.Eval(Container.DataItem, "use_gsm") %>' />
<input type="hidden" class="use-gsm-lineup" value='<%# DataBinder.Eval(Container.DataItem, "use_gsm_lineup") %>' />
<input type="radio" id="radio1-<%# DataBinder.Eval(Container.DataItem, "MatchId") %>" name="radio-<%# DataBinder.Eval(Container.DataItem, "MatchId") %>" class="events-lineups" />
<label for="radio1-<%# DataBinder.Eval(Container.DataItem, "MatchId") %>">Events & Lineups</label>
<input type="radio" id="radio2-<%# DataBinder.Eval(Container.DataItem, "MatchId") %>" name="radio-<%# DataBinder.Eval(Container.DataItem, "MatchId") %>" class="events" />
<label for="radio2-<%# DataBinder.Eval(Container.DataItem, "MatchId") %>">Events</label>
<input type="radio" id="radio3-<%# DataBinder.Eval(Container.DataItem, "MatchId") %>" name="radio-<%# DataBinder.Eval(Container.DataItem, "MatchId") %>" class="none" checked="checked" />
<label for="radio3-<%# DataBinder.Eval(Container.DataItem, "MatchId") %>">None</label>
</td>
頁面加載(內部的document.ready)我調用這個函數來檢查正確的單選按鈕,基於上述值input.use-gsm
和input.use-gsm-lineup
:
function setGsmButtonStates() {
$('td.usegsm').buttonset(); /* http://jqueryui.com/demos/button/#radio */
$('td.usegsm').each(function(i) {
var use_gsm = $(this).children('input.use-gsm').val();
var use_gsm_lineup = $(this).children('input.use-gsm-lineup').val();
if (use_gsm == 'Y' && use_gsm_lineup == 'Y') {
$(this).children('input.events-lineups').attr('checked', true);
}
else if (use_gsm == 'Y' && use_gsm_lineup != 'Y') {
$(this).children('input.events').attr('checked', true);
}
else {
$(this).children('input.none').attr('checked', true);
}
});
}
出於某種原因,設置.attr('checked',true)
甚至.attr('checked','checked')
沒有效果。
我是不是正確使用$.each()
或.attr()
?
您正在使用'.attr()',我認爲這很好,這意味着問題可能不會被選中。 '.children()'只能匹配直接的孩子,請嘗試將其改爲'.find()'並查看它是否有效。 '.buttonset()'包裝輸入可能嗎? – Orbling 2010-12-17 21:12:43
基於他的示例代碼,.children()應該返回正確的元素。 – simshaun 2010-12-17 21:19:26