Was ist mit jQuery der beste Weg, um OnClick-Ereignis-Listener für Optionsfelder festzulegen?
-
09-06-2019 - |
Frage
Für den folgenden HTML-Code:
<form name="myForm">
<label>One<input name="area" type="radio" value="S" /></label>
<label>Two<input name="area" type="radio" value="R" /></label>
<label>Three<input name="area" type="radio" value="O" /></label>
<label>Four<input name="area" type="radio" value="U" /></label>
</form>
Wechsel vom folgenden JavaScript-Code:
$(function() {
var myForm = document.myForm;
var radios = myForm.area;
// Loop through radio buttons
for (var i=0; i<radios.length; i++) {
if (radios[i].value == "S") {
radios[i].checked = true; // Selected when form displays
radioClicks(); // Execute the function, initial setup
}
radios[i].onclick = radioClicks; // Assign to run when clicked
}
});
Danke
BEARBEITEN:Die von mir ausgewählte Antwort beantwortet die von mir gestellte Frage. Mir gefällt jedoch die Antwort, die bind() verwendet, weil sie auch zeigt, wie die Gruppe von Optionsfeldern unterschieden werden kann
Lösung
$( function() {
$("input:radio")
.click(radioClicks)
.filter("[value='S']")
.attr("checked", "checked");
});
Andere Tipps
$(document).ready(function(){
$("input[name='area']").bind("click", radioClicks);
});
functionradioClicks() {
alert($(this).val());
}
Ich benutze es gerne bind()
Anstatt den Event-Handler direkt zu verdrahten, weil Sie zusätzliche Daten an den Event-Hander übergeben können (hier nicht gezeigt, aber die Daten sind ein drittes bind()-Argument) und weil Sie die Bindung einfach aufheben können (und Sie können sie nach Gruppe binden und entbinden-- siehe die jQuery-Dokumente).
$(function() {
$("form#myForm input[type='radio']").click( fn );
});
function fn()
{
//do stuff here
}
$(function() {
$('input[@type="radio"]').click(radioClicks);
});
Ich denke, so etwas sollte funktionieren (aber es ist ungetestet):
$("input[@type='radio']").each(function(i) {
if (this.val() == 'E') {
radioClicks();
this.get().checked = true;
}
}
$("input[@type='radio']").click(radioClicks);
$(function() {
$('#myForm :radio').each(function() {
if ($(this).value == 'S') {
$(this).attr("checked", true);
radioClicks();
}
$(this).click(radioClicks);
});
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow