我监听 2 次点击事件。选中复选框时触发第一个:
$('#example').on('click', '.option', function(){
// Some logic
});
第二个在未选中时触发:
$('#example').on('click', '.checked.option', function(){
// Some other logic
});
至于HTML输入元素,我尝试以各种方式对其应用类:
class="checked option"
class="checked.option"
class="option checked"
class="option.checked"
但无论哪种情况,当取消选中复选框时 - 两个事件都会被触发,而不仅仅是第二个事件。
问:有没有办法防止这种情况发生?或者有没有更方便的方法来检测复选框上的点击事件并且它未选中?
谢谢。
几种方法:
$('#example').on('click', '.option', function(){
if ($(this).is(':checked')) ...
});
请参阅checked
选择器 http://api.jquery.com/checked-selector/
或:
$('#example').on('click', '.option:not(.checked)', function(){
...
});
请参阅not
选择器 http://api.jquery.com/not-selector/
甚至:
$('#example').on('click', '.option:not(:checked)', function(){
...
});
$('#example').on('click', '.option:checked', function(){
...
});
哦,顺便说一句,类应该像这样应用:class="option checked"
,你永远不应该在类属性中放置.
。
问:有没有办法防止这种情况发生?或者有没有更方便的方法来检测复选框上的点击事件并且它未选中?
是的,下面的代码应该阻止它,我会使用 jQuery 选择器(方便的 imo)来检测这一点。希望这有帮助!谢谢。
$('input:checkbox').click(function () {
if ($(this).is(":checked")) {
alert('was un-checked');
} else {
alert('was checked');
}
});
在此处查看代码工作:
http://jsfiddle.net/SCSZ6/
实际上应该使用 change
事件而不是click
,然后检查按钮状态。
$('#example').on('change', '.option', function() {
if( this.checked ) {
}
else {
}
});