Kann nicht festlegen input checked="checked" via jQuery
Ich habe eine Tabelle, deren Zeilen enthalten, die radio-button-Gruppen etwa so:
<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>
Wenn die Seite geladen wird (innen-Dokument.bereit) ich rufe diese Funktion zur überprüfung der richtigen radio-buttons, auf der Grundlage der oben genannten Werte für input.use-gsm
und 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);
}
});
}
Für einige Grund-Einstellung .attr('checked',true)
oder sogar .attr('checked','checked')
hat keine Wirkung.
Bin ich mit $.each()
oder .attr()
falsch?
- Sie sind mit
.attr()
fein ich denke, das bedeutet, dass das Thema haftet, ist nichts ausgewählt..children()
entspricht nur die sofortige Kindern, versuchen Sie es zu.find()
und sehen, ob es funktioniert. Tut.buttonset()
wickeln den Eingängen vielleicht? - Basierend auf seinen Beispiel-code .Kinder() sollte die Rücksendung des richtigen Elemente.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Problem ist, weil buttonsatz dazu blendet die radio-buttons mit span-element. Bewegen teh Aufruf buttonsatz dazu zu Ende würde Ihr problem lösen.
P. S: ich nehme an, Sie würden rufen Sie diese Funktion nur einmal beim laden der Seite.
Erste, und ich glaube nicht, dass dies das Problem behoben, verwenden Sie
.attr('checked', 'checked')
.Dann, ich bin mir nicht sicher, ob jQuery Umfragen die radio-buttons ständig um festzustellen, ob Ihre labels müssen aktualisiert werden, aber ich denke, dass es nicht. Benutze Firebug (oder gleichwertiges Werkzeug), und ich Wette, Sie werden sehen, dass die Checkboxen sind tatsächlich geprüft, in den DOM, aber das label Stile werden nicht aktualisiert, um zu reflektieren.
Wenn das tatsächlich wahr ist, müssen Sie manuell hinzufügen, die "ui-state-active' Klasse in die checkbox label, so dass die jQuery-UI-Schaltfläche angezeigt wird, um ausgewählt werden. (Achten Sie darauf, entfernen Sie diese Klasse von allen anderen Etiketten in der vorher eingestellt wurde.)