为什么点击男性单选按钮没有反应?
<div id="m_wrapper">
<input id="m" type="radio" name="sex" value="male" />Male<br>
</div>
<input id="f" type="radio" name="sex" value="female" />Female
<input id="o" type="radio" name="sex" value="other" />Other
$("#m_wrapper").click(function(e){
$("#m").prop('checked', true);
return false;
});
我知道这里的- > return false
等同于调用 e.preventDefault() AND e.stopPropagation()
然而,当我单击单选按钮时,我有一行明确设置将属性 checked 设置为 true 的 Male 单选按钮。为什么 preventDefault()
会 撤销
我设置的内容?
顺便说一下,在 'm_wrapper'
中的任何位置单击都会选中单选按钮。这是有道理的。
我知道删除 return false
将解决问题。问题是“为什么?”
$("#m_wrapper").click(function(e){
$("#m").prop('checked', true);
return false;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<div id="m_wrapper">
<input id="m" type="radio" name="sex" value="male" />Male<br>
</div>
<input id="f" type="radio" name="sex" value="female" />Female
<input id="o" type="radio" name="sex" value="other" />Other
m_wrapper
(但不是checkbox
)时,此事件与复选框无关,因此您的处理程序将checked = true
。当您单击单选按钮时,相同的事件首先尝试检查单选按钮,但由于被阻止,所以需要将选中状态恢复到原始状态,即单击之前的状态。在此之前其他处理程序已经检查过它并不重要。单选按钮状态将被还原为单击单选按钮时的状态。 - dfsq