复选框选中事件

一.方法

1.jquery判断checked的三种方法:
.attr('checked); //看版本1.6+返回:”checked”或”undefined” ;1.5-返回:true或false
.prop('checked'); //16+:true/false
.is(':checked'); //所有版本:true/false//别忘记冒号哦

2.jquery赋值checked的几种写法:
所有的jquery版本都可以这样赋值:
// $("#cb1").attr("checked","checked");
// $("#cb1").attr("checked",true);
jquery1.6+:prop的4种赋值:
// $("#cb1″).prop("checked",true);//很简单就不说了哦
// $("#cb1″).prop({checked:true}); //map键值对
// $("#cb1″).prop("checked",function(){
return true;//函数返回true或false
});

//记得还有这种哦:$("#cb1″).prop("checked","checked");

二.简单操作

1.反选
$(‘[name=foods]:checkbox’).each(function){
   $(this).attr(“checked”,!$(this).attr(“checked”));
或是:
    This.checked=!this.checked ;
}


2.全选
$(‘[name=foods]:checkbox’).attr(‘checkbox’,’true’); 
$(‘[name=foods]:checkbox’).attr(‘checkbox’,’false’); //全不选


3.选中的个数
$(‘[name=foods]:checkbox:checkbox’).each(function){
    Str =$(this).val();
}


4.选中删除
            $ (".del").click(function(){
                    $ (":checked").parent().parent().remove(); 
                 //隐藏所有被选中的input元素
               / /parent() 获得当前匹配元素集合中每个元素的父元素,
            })


5.全选/全不选
$('#check-all1').click(function(event){
      if($(this).prop("checked") == true){
                $(this).parent().parent().parent().find("input[name='items']").prop("checked", true);
        }else{
                $(this).parent().parent().parent().find("input[name='items']").prop("checked", false);
          }          
  })


6.全选/全不选(checkedALL)(当一个foods复选框没有选择时,这个复选框就没有打勾)
$ ("input[name='items']").click(function(){
       var  $tmp=$ ("input[name='items']");
      if($tmp.length==$tmp.filter(':checked').length){
               $ ('.check-all').attr('checked',true);
       }else{
               $ ('.check-all').attr('checked',false);
      }

});

三.例子


<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type="text/css">
html,body,div,ul,li,button,label{
	margin: 0;
	padding: 0;
}
a{text-decoration: none;}
.formcnt{
	width: 200px;
	margin:50px auto;
}
.formcnt-row{
	width: 100%;
	margin-bottom: 10px;
}
.all-btn{
    width: 65px;
    text-align: center;
    background: #ffa800;
    color: #fff;
    line-height: 30px;
    display: inline-block;
    border-radius: 5px;
}
.all-btn>label{
    display: inline-block;
    width: 100%;
}
.del-btn{
    width: 70px;
    background: #ccc;
    line-height: 30px;
    text-align: center;
    display: inline-block;
}
</style>
</head>
<body>
<form action="" method="get" class="formcnt"> 
	<h2>您喜欢的水果?</h2>
	<div class="formcnt-row"><label><input name="Fruit" type="checkbox" value="" />苹果 </label></div> 
	<div class="formcnt-row"><label><input name="Fruit" type="checkbox" value="" />桃子 </label></div>  
	<div class="formcnt-row"><label><input name="Fruit" type="checkbox" value="" />香蕉 </label> </div> 
	<div class="formcnt-row"><label><input name="Fruit" type="checkbox" value="" />梨 </label> </div> 
	<div class="btncnt">
		<div class="all-btn">
			<label><input class="all-check" name="all" type="checkbox" value="" />全选 </label>
		</div>
		<div class="del-btn">删除</div>
	</div>
	
	
</form> 
<script type="text/javascript" src="jquery-1.11.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
	 $('.formcnt').each(function(){
	    var _this=$(this);
	    //全选
	    $(_this).find('.all-check').click(function(){
	        if($(this).is(':checked')){
	            $(_this).find("input[name='Fruit']").each(function(i,k){
	                $(k).prop('checked',true);
	            })
	        }else{
	            $(_this).find("input[name='Fruit']").each(function(i,k){
	                $(k).prop('checked',false);
	            })
	        }
	    })
	    //复选框单击
	    $(_this).find('.formcnt-row label').each(function(){
	        $(this).click(function(){
	            var  $tmp=$(this).parent().parent().find("input[name='Fruit']");
	            if($tmp.length==$tmp.filter(':checked').length){
	                $(_this).find('.all-check').prop('checked',true);
	            }else{
	                $(_this).find('.all-check').prop('checked',false);
	            }  
	        });
	    })
	    $ (".del-btn").click(function(){
                  $(_this).find('.formcnt-row label input:checked').parent().parent().remove(); 
			//隐藏所有被选中的input元素
			 //parent() 获得当前匹配元素集合中每个元素的父元素,
           })

	});
});
</script>
</body>
</html>






<think>好的,我现在需要解决用户关于如何实现名为btSelectItem的checkbox复选框选中事件处理的问题。首先,我得理解用户的需求。用户提到了使用onchange或onclick事件来处理复选框的状态变化,可能是在网页开发中遇到的问题。 根据用户提供的引用资料,特别是引用[3]和[5],onclick和onchange事件在行为上有区别。onclick是在点击时触发,而onchange是在值改变后触发。不过,在复选框的情况下,点击通常会改变值,所以两者可能有重叠。但需要注意,onchange在某些浏览器(如IE)中可能不会立即触发,直到失去焦点,这可能会导致问题。引用[2]和[4]提到,使用click事件可能更可靠,因为它在值更新后触发,避免了旧值的问题。 接下来,我需要考虑如何具体实现。用户提到的是名为btSelectItem的复选框,所以可能需要通过ID或名称获取该元素。然后,绑定事件监听器,可能是onchange或onclick。根据引用[5]的建议,使用click事件更好,因为它确保在值更新后执行。 同时,要注意兼容性问题。引用[2]指出IE在点击标签时可能不会正确触发change事件,而click事件在这种情况下更可靠。因此,推荐使用click事件来处理。 然后,我需要给出代码示例。使用JavaScript,可以通过getElementById或querySelector获取元素,然后添加事件监听器。在事件处理函数中,通过checked属性获取当前状态。 此外,用户可能需要知道如何区分事件类型,比如在jQuery中可以使用change()方法,或者原生JS中的addEventListener。需要比较这两种方法的优缺点,并说明如何处理事件。 最后,要总结推荐使用click事件的原因,并提醒兼容性问题,确保用户在不同浏览器下都能正确获取复选框的状态。</think>### 如何实现`btSelectItem`复选框选中事件处理? #### 1. 使用`onclick`事件 `onclick`事件会在用户点击复选框时触发,且**确保此时`checked`状态已更新**。这是最可靠的方式,尤其适用于需要兼容旧版浏览器的场景[^5]。 **实现代码:** ```html <input type="checkbox" id="btSelectItem" name="btSelectItem"> <script> document.getElementById('btSelectItem').onclick = function() { console.log('选中状态:', this.checked); // 直接获取最新状态 }; </script> ``` #### 2. 使用`onchange`事件 `onchange`事件复选框状态变化后触发,但需注意:**在IE浏览器中,若通过点击关联标签修改状态,可能因焦点问题导致获取旧值**[^2][^4]。 **实现代码:** ```html <input type="checkbox" id="btSelectItem" name="btSelectItem"> <script> document.getElementById('btSelectItem').onchange = function() { console.log('选中状态:', this.checked); }; </script> ``` #### 3. 推荐方式:`addEventListener` 通过`addEventListener`绑定`click`或`change`事件,可避免覆盖已有事件处理逻辑。 **示例代码:** ```javascript document.querySelector('#btSelectItem').addEventListener('click', function(e) { console.log('当前状态:', e.target.checked); }); ``` #### 4. jQuery实现 如果使用jQuery,可直接调用`change()`或`click()`方法: ```javascript $('#btSelectItem').change(function() { console.log('状态:', $(this).prop('checked')); }); ``` --- ### 关键区别与注意事项 | 事件类型 | 触发时机 | 浏览器兼容性问题 | |------------|------------------------------|--------------------------------------| | `onclick` | 点击时触发,状态已更新 | 无兼容性问题,推荐使用 | | `onchange` | 状态变化后触发,可能延迟更新 | IE中点击标签时可能获取旧值[^4] | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值