如何检测单选按钮取消选择事件?

有没有一种简单的方法可以将“取消选择”事件附加到单选按钮上?似乎更改事件仅在选择按钮时触发

HTML

<输入type=“radio”id=“one”name=“a”/>
<输入type=“radio”id=“two”name=“a”/>

JavaScript

$('#one')。更改(函数(){
如果(选中此项){
//被选中时做某事
}否则{//这将永远不会发生
//取消选择时执行某些操作
}
});​

JSFIDLE

为什么不简单地创建一个自定义事件,比如说,取消选择,并让它在单击的无线电组的所有成员上触发,除了单击的元素本身?它的方法更容易使用jQuery提供的事件处理API

HTML

<!——第一组单选按钮-->
<=“btn\U red”标签>红色:&lt/标签&gt&书信电报;输入id=“btn\u red”type=“radio”name=“radio\u btn”/>
<=“btn_蓝色”标签>蓝色:&lt/标签&gt&书信电报;输入id=“btn\u blue”type=“radio”name=“radio\u btn”/>
<=“btn_yellow”标签>黄色:&lt/标签&gt&书信电报;输入id=“btn\u yellow”type=“radio”name=“radio\u btn”/>
<=“btn_粉红”标签>粉红色:&lt/标签&gt&书信电报;输入id=“btn\u pink”type=“radio”name=“radio\u btn”/>
<hr/>
<!--第二组单选按钮-->
<=“btn\u red\u group2”标签>红色2:&lt/标签&gt&书信电报;输入id=“btn\u red\u group2”type=“radio”name=“radio\u btn\u group2”/gt;
<=“btn\u blue\u group2”标签>蓝色2:&lt/标签&gt&书信电报;输入id=“btn\u blue\u group2”type=“radio”name=“radio\u btn\u group2”/gt;
<=“btn\u yellow\u group2”标签>黄色2:&lt/标签&gt&书信电报;输入id=“btn\u yellow\u group2”type=“radio”name=“radio\u btn\u group2”/gt;
<=“btn\u pink\u group2”标签>粉红色2:&lt/标签&gt&书信电报;输入id=“btn\u pink\u group2”type=“radio”name=“radio\u btn\u group2”/gt;

jQuery

//将单击事件处理程序附加到所有单选按钮。。。
$('input[type=“radio”]”)。绑定('click',function(){
//仅处理与当前单击按钮的name属性匹配的内容。。。
$('input[name=“”+$(this).attr('name')+“]')。not($(this)).trigger('deselect');//当前无线组的每个成员,单击的成员除外。。。
});
$('input[type=“radio”]”)。绑定('deselect',function(){
log($(this));
})

​取消选择事件将仅在同一无线电组(具有相同名称属性的元素)的成员之间触发

jsidle解决方案

编辑:为了说明附加标签标签的所有可能位置(包装无线元素或通过id选择器附加),最好使用onchange事件触发处理程序。感谢浮士德指出这一点

$('input[type=“radio”]”)。在('change',function()上{
// ...
}

发表评论