我使用custom CSS toggle switch来设置复选框输入的样式。 GitHub Project
但是,当您单击其中一个复选框切换时,它会将点击两次注册,并且永远不会更改选中的值。如果取消选中该复选框,它将保持未选中状态。如果它开始检查,它将保持检查状态。
我做了一个小提示来证明这个问题:https://jsfiddle.net/w1ug4jdc/
样式化复选框的HTML如下所示:
<label class="switch-light switch-candy" onclick="doSomething($(this));">
<input type="checkbox" />
<strong>
Wireless
</strong>
<span>
<span>Off</span>
<span>On</span>
<a></a>
</span>
</label>
这是完成所有样式的CSS文件:https://github.com/ghinda/css-toggle-switch/blob/master/dist/toggle-switch.css
答案 0 :(得分:2)
使用
.prop()
而非.attr()
用于checked
状态,因为checked
是元素的属性,不使用内联事件绑定。
试试这个:
$('.switch-light.switch-candy').on('click', function() {
$('#updates').append('<p>checked=' + $(this).find('input').prop('checked') + '</p>');
})
&#13;
<link href="https://merkd.com/engine/ui/themes/lux/assets/css/toggle-switch.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<label class="switch-light switch-candy">
<input type="checkbox" />
<strong>
Wireless
</strong>
<span>
<span>Off</span>
<span>On</span>
<a></a>
</span>
</label>
<div id="updates"></div>
&#13;
将事件绑定到input元素并获取输入特定值:
$('.switch-light.switch-candy input').on('click', function() {
$('#updates').append('<p>checked=' + this.checked + '</p>');
})
&#13;
<link href="https://merkd.com/engine/ui/themes/lux/assets/css/toggle-switch.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<label class="switch-light switch-candy">
<input type="checkbox" />
<strong>
Wireless
</strong>
<span>
<span>Off</span>
<span>On</span>
<a></a>
</span>
</label>
<div id="updates"></div>
&#13;
答案 1 :(得分:0)
将onclick事件附加到输入而不是标签:
https://jsfiddle.net/w1ug4jdc/1/
<input type="checkbox" onclick="$('#updates').append('<p>checked='+$(this).find('input').attr('checked')+'</p>');" />
(但如上所述,不要使用内联事件)
答案 2 :(得分:0)
似乎jQuery没有读取“已检查”属性。
$("label").click(function(){
$('#updates')
.append('<p>checked='+$(this).find(':checkbox').is(':checked')+'</p>');
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label onclick="">
<input type="checkbox" />
</label>
<div id="updates"></div>