我正在使用#javascript中友好小伙伴提供的这个简单脚本取消选中单选按钮:
$('.feed').on('click', 'input[type=radio]', function() {
var myParent = $(this).closest('div');
var ref = $(this);
if( myParent.data('val') == $(this).val() ){
var ref = myParent.find('.none input');
ref.prop('checked',true);
}
myParent.data('val',ref.val() )
});
一切正常,请参阅此fiddle,但当我添加属性'已选中'在一个单选按钮上,您实际上必须先单击两次才能取消选中它,请参阅此fiddle。这让我想到了,正在设置'检查'作为一个属性实际上等于手动检查单选按钮?或者为什么我失败了?
答案 0 :(得分:1)
这与添加属性与点击无关,它是附加代码,特别是这一行:
if (myParent.data('val') == $(this).val() ){
其中说,如果您之前点击过这个,请将其关闭。
然而,你并没有告诉代码你已经(虚拟)“点击”了它。
您可以通过将初始值添加到'myParent'来实现此目的,一种方法是将其添加到html:
<div data-val='1'>
更新了小提琴:https://jsfiddle.net/8jh2k8u8/4/
另一种方法是通过查找所选的广播(:checked
)来通过代码初始化父级:
var startup = $(".feed input[type=radio]:checked").first();
if (startup.length) {
startup.closest("div").data("val", startup.val())
}