Sie verlieren den richtigen Wert von i
, weil es in der for
Schleife nicht scoped ist.
Sie könnten use $.each()
instead, die einen Verschluss schafft:
$.each(daysofweek, function(i, val) {
$("input[name=" + daysofweek[i] + "]").change(function() {
if (this.checked) {
$("#" + daysofweek[i] + "_content").show();
} else {
$("#" + daysofweek[i] + "_content").hide();
}
}); //loop through all days of the week creating the event that show/hides days
});
Auch ich $(this).is(':checked')
-this.checked
geändert. Es ist viel schneller.
Sie können auch ein Bit by using .toggle()
anstelle von show/hide
vereinfachen.
$.each(daysofweek, function(i, val) {
$("input[name=" + daysofweek[i] + "]").change(function() {
$("#" + daysofweek[i] + "_content").toggle(this.checked);
}); //loop through all days of the week creating the event that show/hides days
});
Was funktioniert nicht? Aus dem obigen Text geht nicht hervor. Ist es auch möglich, dass mehrere Wochentags-Checkboxen gleichzeitig in Ihrer Benutzeroberfläche aktiviert sind? – Adrian
Entschuldigung. Das Änderungsereignis passiert nicht .... Ich meine wenn ich die Tage manuell in die Selektoren schreibe funktioniert es. Also ich denke, es ist meine Verkettung. – Adam