こんにちはみんな私はイベントで問題を抱えています。チェックボックスリストがあり、すべてのボックスをチェックするメインチェックボックスがあります。チェックボックスリスト項目のいくつかを[イベント]をクリックすると、「選択されたオブジェクト」にdata-idattrが追加されます。したがって、私の場合、メインのチェックボックスを押して他のすべてをチェックすると、すべてがOKになります(他のすべての要素をクリックするだけです)。しかし、そうすると、配列が空になります。チェックを外すと、本来の方法になりますが、チェックされます(チェックを外すと、空になります)。
......
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(チェックボックスまたはチェックボックスなし)をクリックする必要があることです...メインチェックボックスのようにすべてのチェックボックスをクリックするだけです...正常に動作しますが、他のすべてのチェックボックスにイベントがありますemをクリックすると、emをクリックするとデータが配列に追加され、配列からデータが削除されます。チェックボックスを個別にクリックすると、データが配列に正しく追加/削除されます...ただし、メインチェックボックスをクリックすると...右のチェックボックスをクリックしますが、すべてチェックするとデータ配列は空になり、すべてチェックを外すとデータ配列がいっぱいになります...逆の方法である必要があります