Здравствуйте уважаемый!
Столкнулся с абсурдностью toggle(), хотя наверное это моя логика столкнулась с абсурдом.
Задача в следующем: Функция во вложении формирует Таблицу ГРУППА КАМЕР -- ПОЛЬЗОВАТЕЛИ -- и ПРАВА ПОЛЬЗОВАТЕЛЕЙ на эти группы (рисунок сформированной таблицы прилагается). В свою очередь после каждой ГРУППЫ КАМЕР формируются <tr> с КАМЕРАМИ входящими в данную группу (+ отношения прав к каждому пользователю). Предполагалось, что при клике по <tr> в которой формируется ГРУППА КАМЕР и её ПРАВА, будут появляться/скрываться КАМЕРЫ со своими ПРВАМИ, входящие в данную группу
Проблема: click отрабатывает своё, но странно. При нажатии на любую <tr> с ГРУППОЙ КАМЕР, всегда появляются/ скрываются КАМЕРЫ относящиеся к последней ГРУППЕ КАМЕР (после неё конечно же). Остальные камеры как были скрыты, так и остались.
Если кто сталкивался с подобным, прошу помощи или хоть наводку куда копать. Если что не понятно, отвечу и разжую более подробно.
Благодарю всех тех кто откликнется!
PS: click на 54 строке
| Код | function rules_draw() {
var usr_table = $("#rules_list"); $('thead',usr_table).remove(); $('tbody',usr_table).remove(); var temp_line = null; // Шапка таблицы var temp_head = $('<thead/>', {}); var temp_line = $('<tr/>', {}); var temp_line_2 = null; $(temp_line) .append($('<th/>',{ text: 'Камера/Пользователи' })); /********************************************************************************************/ //Создание ПОЛЬЗОВАТЕЛЕЙ в заголовке таблицы (<th>) for (var usr_line in users) { var usr = users[usr_line]; if(usr == null) {continue;} $(temp_line) .append($('<th/>',{}) .append($('<div/>',{ html: '<b>'+usr.user_login+'<b/><br/>', "class": lang.rules.allowedbox[usr.is_admin] }).bind('click',(function(usr){return function(){adm_usr(usr.user_id)}})(usr)) .append($('<span/>',{html: '<span class="tip">(id: '+usr.user_id+')</span><br/>'})) ) ) ; $(usr_table).append(temp_line); } $(temp_head).append(temp_line); $(usr_table).append(temp_head);
// Тело таблицы
/********************************************************************************************/ //Создание ГРУПП КАМЕР в первой колонке таблицы (<td>)
$temp_line = null;
for (var cid in rules_all) { var rules = rules_all[cid]; //В cid приходят ID группы камер if(rules == undefined || rules == null) {continue;} temp_line = $('<tr/>',{id:'rules'+cid}); $(temp_line) .click(function () {$(".group"+cid).toggle();}) //click клеится на <tr/> с классом ("class": 'group'+cid), который вешается на камеры относящиеся к своей ГРУППЕ КАМЕР и должен по нажатию показывать/скрывать список камер (вместе с ячейками прав), содержащихся в данной группе
.append($('<td/>',{}) .append($('<div/>',{ html: '<b>'+rules[usr.user_id].cam_group_name+'<b/><br/>', "class": lang.rules.allowedbox[rules[usr.user_id].rule_cam_status_user]}) .append($('<span/>',{html: '<span class="tip">(id: '+cid+')</span>'})) )
); /********************************************************************************************/ //Создание ПРАВ на пересечениях ПОЛЬЗОВАТЕЛЬ -- ГРУППА КАМЕР (<td>) for (var usr_line in users) { var usr = users[usr_line]; if(usr == null) { continue; } $(temp_line) .append($('<td/>',{}) .append($('<div/>',{ html: 'Разрешено для пользователя: '+lang.rules.allowed[rules[usr.user_id].rule_cam_status_user]+'<br />' +'Разрешено для группы: '+lang.rules.allowed[rules[usr.user_id].rule_cam_status_group]+'<br />' +'Итог: '+lang.rules.allowed[rules[usr.user_id].result], "class":lang.rules.allowedbox[rules[usr.user_id].result] }))
) ; } $(usr_table).append(temp_line); /********************************************************************************************/ //Создание КАМЕР входящих в ГРУППУ КАМЕР в первой колонке таблицы (<td>) for (var cam_id in rules_cam[cid]) {
temp_line_2 = $('<tr/>',{id:'cam'+cam_id, "class": 'group'+cid});
$(temp_line_2).hide() //Эти <tr/> по умолчанию скрыты. При click показываются или обратно скрываются .append($('<td/>',{}) .append($('<div/>',{ html: '<b>'+rules_cam[cid][cam_id].cam_name+'<b/><br/>', "class": 'f-cams' }) .append($('<span/>',{ html: '<span class="tip">(id: '+cam_id+')</span>' })) )
); /********************************************************************************************/ //Создание ПРАВ на пересечениях ПОЛЬЗОВАТЕЛЬ -- КАМЕРА (<td>) for (var usr_line in users) { var usr = users[usr_line]; if(usr == null) { continue; } $(temp_line_2) .append($('<td/>',{}) .append($('<div/>',{ html: lang.rules.cams[rules_cam[cid][cam_id][usr.user_id].result], "class":lang.rules.allowedcamsbox[rules_cam[cid][cam_id][usr.user_id].result] }))
) ; } $(usr_table).append(temp_line_2); } }
}
|
|