Это точно для чего label
элементов .Используйте их, а не span
элементы:
<label class="radio-box" id="white-box">
<input type="radio" id="white" name="colour"> White
</label>
<label class="radio-box" id="red-box">
<input type="radio" id="red" name="colour"> Red
</label>
<label class="radio-box" id="blue-box">
<input type="radio" id="blue" name="colour"> Blue
</label>
Когда метка оборачивает input
таким образом, она ассоциируется с этим input
.(Если вы не можете использовать обтекание, вы можете использовать атрибут for
, чтобы сообщить метке, что такое id
связанного с ним input
.)
Вы могли бы сделатьэто работает с пролетами.Таргетинг просто на эти промежутки:
$("span > input[type=radio][name=colour]").parent().on("click", function() {
$(this).find("input[type=radio][name=colour]").prop("checked", true);
});
или нацеливание на input[type=radio]
внутри span.radio-box
:
$("span.radio-box > input[type=radio]").parent().on("click", function() {
$(this).find("input[type=radio]").prop("checked", true);
});
Но, опять же, это именно то, что label
для, так что лучше использовать это.