我一直在尝试使用jQuery取消选择单选按钮,但我遇到了prop
函数的问题。当此代码运行时,我的条件($(e.currentTarget).prop('checked')
)总是计算为true。
这是一个演示我的问题的小提琴:Jsfiddle
仅供参考:我使用的是jQuery 1.8.2,我无法更新它,因为它是一个具有许多依赖项的遗留项目。另外,我必须根据客户的要求使用单选按钮。
使用Javascript:
$("input[name=optionMedia]").click(function(e) {
if ($(e.currentTarget).prop('checked')) {
$(e.currentTarget).prop('checked', false);
}
});
HTML:
<input class="bigSizeInput" type="radio" id="audioVideo" name="optionMedia" value="1"/>
<input class="bigSizeInput" type="radio" id="showReel" name="optionMedia" value="2" />
答案 0 :(得分:1)
你可以这样做
$('input.bigSizeInput').mouseup(function() {
if ($(this).is(':checked')) {
setTimeout(function() {
$('input.bigSizeInput:checked').prop('checked', false);
}, 1)
}
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="bigSizeInput" type="radio" id="audioVideo" name="optionMedia" value="1" />
<input class="bigSizeInput" type="radio" id="showReel" name="optionMedia" value="2" />
答案 1 :(得分:0)
这是因为checked是一个属性。如果它在那里是真的,如果不是它不是真的。因此,您应该切换到复选框或使用
$("..").removeProp('checked')
答案 2 :(得分:0)
使用复选框选中/取消选中比单选按钮更好。但是如果你想使用单选按钮,你需要检查是否检查了无线电,使用复制它并删除复制元素的已检查属性,然后在目标无线电之后插入它。最后删除原始收音机。
$(document).on("mousedown", "input[name=optionMedia]", function(e) {
if (this.checked)
$(this).clone().prop('checked', false).insertAfter(this).end().remove();
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<input class="bigSizeInput" type="radio" id="audioVideo" name="optionMedia" value="1"/>
<input class="bigSizeInput" type="radio" id="showReel" name="optionMedia" value="2" />
&#13;