写了一段代码
var checkbox={
checkAllBox:'checkAllBox',
uncheck:'uncheck',
data_checked:'data-checked',
checkbox_css:'checkbox-css',
checked:'checked',
cancelCheck:'cancelCheck',
select_one:function () {
const checkAllBox=this.checkAllBox;
const uncheck=this.uncheck;
const checkbox_css=this.checkbox_css;
const checked=this.checked;
const cancelCheck=this.cancelCheck;
var checkOneBox_css=document.querySelectorAll('.'+checkbox_css);
for(var i=0;i<checkOneBox_css.length;i++){
(function (i){
if(checkOneBox_css[i].className.indexOf(uncheck)===-1){
checkOneBox_css[i].addEventListener('click',function (event) {
console.log(event.target);
event.stopPropagation();
var event_name=event.target.className;
if(event.target===this&&event.target.className.indexOf(checkAllBox)===-1){
if(event_name.indexOf(checked)!==-1){
event.target.className=event_name.replace(checked,cancelCheck);
}else{
if(event_name===checkbox_css){
event.target.className +=' '+checked;
}else{
event.target.className=event_name.replace(cancelCheck,checked);
}
}
}
},false);
}
})(i);
}
},
checkbox:function () {
this.select_one();
}
};
每次调用checkbox.checkbox(); 会重复绑定addEventListener,该怎么办。。。
绑定前先删除先前绑定的事件,详见http://blog.csdn.net/chaoyang89111/article/details/78131250
同上,先解除绑定,再绑定。
直接用onclick方法替换addEventListener
我知道重复绑定可以先解绑,如果是jQuery很简单,或者函数写在外面也是,可是你们看下我的函数写法,再说下这个构造函数怎么解绑啊
var checkbox={
checkAllBox:'checkAllBox',
uncheck:'uncheck',
data_checked:'data-checked',
checkbox_css:'checkbox-css',
checked:'checked',
cancelCheck:'cancelCheck',
select_one:function () {
const checkAllBox=this.checkAllBox;
const uncheck=this.uncheck;
const checkbox_css=this.checkbox_css;
const checked=this.checked;
const cancelCheck=this.cancelCheck;
var checkOneBox_css=document.querySelectorAll('.'+checkbox_css);
for(var i=0;i<checkOneBox_css.length;i++){
(function (i){
if(checkOneBox_css[i].className.indexOf(uncheck)===-1){
checkOneBox_css[i].addEventListener('click',function (event) { console.log(event.target);
event.stopPropagation();
var event_name=event.target.className;
if(event.target===this&&event.target.className.indexOf(checkAllBox)===-1){
if(event_name.indexOf(checked)!==-1){
event.target.className=event_name.replace(checked,cancelCheck);
}else{
if(event_name===checkbox_css){
event.target.className +=' '+checked;
}else{
event.target.className=event_name.replace(cancelCheck,checked);
}
}
}
},false);
}
})(i);
}
checkOneBox_css.removeEventListener('click',function (event) {},false); // 插入在这边试试看
},
checkbox:function () {
this.select_one();
}
};