单击元素或其容器时如何(取消)检查无线电输入元素?
我已经尝试过以下代码,但它没有取消选中收音机。
HTML:
<div class="is">
<label><input type="radio" name="check" class="il-radio" /> Is </label>
<img src="picture" />
</div>
jQuery的:
$(".is label, .is ").click(function () {
if (!$(this).find(".il-radio").attr("checked")) {
$(this).find(".il-radio").attr("checked", "checked");
} else if ($(this).find(".il-radio").attr("checked") == "checked") {
$(this).find(".il-radio").removeAttr("checked");
}
});
答案 0 :(得分:6)
单选按钮不取消选中,您需要使用复选框(type ='checkbox')
答案 1 :(得分:6)
您必须阻止默认行为。目前,点击后,会发生以下情况:
click
事件触发了容器(div.is
)。click
事件会触发标签。更正后的代码(http://jsfiddle.net/nHvsf/3/):
$(".is").click(function(event) {
var radio_selector = 'input[type="radio"]',
$radio;
// Ignore the event when the radio input is clicked.
if (!$(event.target).is(radio_selector)) {
$radio = $(this).find(radio_selector);
// Prevent the event to be triggered
// on another element, for the same click
event.stopImmediatePropagation();
// We manually check the box, so prevent default
event.preventDefault();
$radio.prop('checked', !$radio.is(':checked'));
}
});
$(".il-radio").on('change click', function(event) {
// The change event only fires when the checkbox state changes
// The click event always fires
// When the radio is already checked, this event will fire only once,
// resulting in an unchecked checkbox.
// When the radio is not checked already, this event fires twice
// so that the state does not change
this.checked = !this.checked;
});
答案 2 :(得分:0)
仅使用html,功能相同
<label for="rdio"><input type="radio" name="rdio" id="rdio" class="il-radio" /> Is </label>