我需要知道何时选中页面上的任何复选框:
例如
<input type="checkbox">
我在jQuery中尝试过
$('input type=["checkbox"]').change(function(){
alert('changed');
});
但这没用,有什么主意吗?
Answers:
使用change()事件和is()测试:
$('input:checkbox').change(
function(){
if ($(this).is(':checked')) {
alert('checked');
}
});
我将以上内容更新为以下内容,因为我愚蠢地依赖jQuery(位于中if),而DOM属性同样合适,并且使用起来也更便宜。为了使选择器能够在支持它的那些浏览器中传递给DOM的document.querySelectorAll()方法,还对其进行了更改:
$('input[type=checkbox]').change(
function(){
if (this.checked) {
alert('checked');
}
});
为了完善起见,在普通的JavaScript中也可以轻松实现相同的操作:
var checkboxes = document.querySelectorAll('input[type=checkbox]'),
checkboxArray = Array.from( checkboxes );
function confirmCheck() {
if (this.checked) {
alert('checked');
}
}
checkboxArray.forEach(function(checkbox) {
checkbox.addEventListener('change', confirmCheck);
});
参考文献:
<label>元素进行用户交互外,我从未发生过更改事件触发(除非出于某种原因我以编程方式触发了更改事件)。
$('input:checkbox').live('change', function(){
if($(this).is(':checked')){
alert('checked');
} else {
alert('un-checked');
}
});
jsfiddle:http : //jsfiddle.net/7Zg3x/1/
.live呢 为什么不.click呢?
live比正常绑定慢得多,因为该事件应该冒泡。change如果元素是静态元素,则直接使用绑定到元素的事件更有意义。
.live()从1.9起已完全删除。
$("input:checkbox").change(function(){
alert($(this).val());
});
$('input type=["checkbox"]')不是有效的选择器。应该$('input[type=checkbox]')改为。甚至会更好$('input:checkbox')。;)