[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Волшебный toggle() или кривые руки?
Jops
Здравствуйте уважаемый!

Столкнулся с абсурдностью 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);
}
}

}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.