在项目中碰到一个问题
1. 检测一组checkbox是否被选中
2. 如果被选中,返回它对应的name值
3. 如果一个都没选中,返回一个false
我想到的解决方案
var checkList_box = function(param,output){ var $boolean,$result = {}; if(param){ if(typeof param === 'string'){ $boolean = $(param).prop('checked') ? true : false; $result['name_'+param] = $(param).attr('name') } else if(typeof param === 'object'){ $.each(param,function(i,n){ if($(n).prop('checked')){ $boolean = true; $result['name_'+n] = $(n).attr('name'); } }) //注意此外需判断对象是否为空的对象 //第一种不兼容的方法 先写出来的,最后发现不兼容IE6 IE7 //JSON对象在IE8以下不支持 if(JSON.stringify(result) === '{}'){ $boolean = false; return false } //第二种方法,采用枚举对象的方法 $boolean = checkObj(result) if($boolean){ return result }else{ return false } } }else{ return false } return result }
其中 checkObj()方法如下
var checkObj = function(param){ if(typeof param !== ‘object’ || param === ‘null’){ return false } else{ var k =0; for (var i in param){ if(param.hasOwnProperty(n)){ k++ } } return !!k } }
完毕 !!
写完突然发现自已好傻,可以用jquery 中的选择器来做同样的事情
var arr = $(':checkbox") var result = {} $.each(arr,function(i,n){ if($(this).prop("checked")){ result['name'+n] = $(this).attr('name') } return result })
就权当留作一个教训吧!!!