大家好,我在使用事件时遇到问题。我有一个复选框列表,我有一个选中所有框的主复选框。当我 clickEvent 我的一些复选框列表项时,它应该将 data-id attr 添加到“选定的 obj”。因此,在我的情况下,当我按下主复选框来检查所有其他复选框时,一切正常(它只是单击所有其他元素)。但是当我这样做时,它会清空我的数组。我的意思是如果我取消选中它将是它应该被选中的方式(当我取消选中它时它会在我检查它清空时填充)。
......
var selected = {};
var reload = function(){
selected = {};
$('.checkbox_all').unbind('click');
$('.table_checkbox').unbind('click');
$('.checkbox_all').bind('click', checkAll);
$('.table_checkbox').bind('click', checkMe);
}
var checkMe = function(e){
var checkbox = $(e.target);
var id = checkbox.attr('data-id');
//console.log(id);
if(checkbox.attr('checked')){
selected[id] = id;
}else{
if(selected[id]) delete selected[id];
}
console.log(selected);
}
var checkAll = function(e){
if($(e.target).attr('checked')){
$('.table_checkbox').each(function(){
if($(this).attr('checked') === false){
$(this).click();
}
});
}else{
$('.table_checkbox').each(function(){
if($(this).attr('checked') === true){
$(this).click();
}
});
}
//console.log(selected);
}
.......
HTML:
<tr><th class="table-header-check"><input type="checkbox" class="checkbox_all"/></th></tr>
<tr class=""><td><input type="checkbox" data-id="5" class="table_checkbox"></td></tr>
<tr class="alternate-row"><td><input type="checkbox" data-id="6" class="table_checkbox"</td></tr>
<tr class="alternate-row"><td><input type="checkbox" data-id="8"
....ETC\
我的问题是,当我单击 .checkbox_all 时,它应该单击所有 .table_checkbox(即 r cheched 或 uncheched)......它只是像主复选框一样单击所有复选框......它工作正常,但我有一个事件所有其他复选框如果我单击 em,我会在取消单击 em 时将一些数据添加到数组中,它会从数组中删除数据....所以当我单独单击复选框时,它们会正确地将数据添加/删除到数组中...但是当我单击主复选框时...它点击右边的复选框,但数据数组在全部选中时为空,当全部未选中时为满......它必须是相反的方式