单选按钮数组click事件未触发?如何弹窗提示选中按钮?
解决单选按钮点击事件无法触发的问题
嘿,我来帮你排查下这个点击事件不触发的问题~结合你给出的代码,主要有几个可能的原因和对应的解决办法:
1. 事件绑定时机不对,DOM还没加载完成就执行了代码
如果你的JS代码是在页面DOM元素还没渲染完成时就运行了,那.selectedOption元素还不存在,自然绑定不上click事件。解决办法是把代码放到DOM加载完成的回调里:
$(document).ready(function() { $('.selectedOption').click(function() { // 如果你绑定的是label,要先找到内部的input再拿值 alert($(this).find('input[name=credit-card]').val()); alert($('input[name=credit-card]:checked').val()); }); });
2. 实际点击的元素不是你绑定事件的对象
你的CSS里把原生<input>设置了appearance: none,相当于把它隐藏了,用户实际点击的是带有背景图的label(也就是.selectedOption对应的元素),但如果你的事件是绑在隐藏的input上,点击label时input本身不会直接触发click事件(虽然单选状态会变化)。
更靠谱的做法是监听单选按钮的change事件——只要单选状态发生变化就会触发,不管是点击label还是直接操作input:
$(document).ready(function() { $('input[name=credit-card]').change(function() { // 这里直接拿当前触发事件的input值就行,因为change触发时它就是选中状态 alert($(this).val()); // 当然也可以用全局选择器确认选中值 alert($('input[name=credit-card]:checked').val()); }); });
3. 额外检查:CSS是否阻止了点击事件
如果你的label或input设置了pointer-events: none,或者被其他元素遮挡,也会导致事件无法触发。检查下你的CSS有没有这类属性,有的话去掉就好。
另外提个小细节:你代码里的mastercard背景图URL没写完整(url(http://i.imgur.com/SJbRQF7.png...)),虽然这不会影响事件触发,但会导致背景图加载失败,记得补全哦~
内容的提问来源于stack exchange,提问作者cb24
相关产品推荐
相关产品推荐

