html table collapse,html - expand/collapse table rows with JQuery - Stack Overflow

I expanded one of the answers, however my functionality is a bit different. In my version, different rows form different groups. And "header" row triggers collapsing/expanding of that particular group. Also, each individual subgroup memorizes state that its in. It might sound a bit confusing, you can test drive my version using jsfiddle. Hope this code snippets will be helpful to someone out there!

HTML

Header 1Header 2
Group 1data 2
data 3data 4
Group 2data 2
data 3data 4
Sub Group 1data 6
data 7data 8
data 9data 10
Sub Sub Group 1data 11
data 12data 13
data 14data 15
Sub Group 2data 11
data 12data 13
data 14data 15

CSS

table, tr, td, th

{

border: 1px solid black;

border-collapse:collapse;

}

img.button_open{

content:url('http://code.stephenmorley.org/javascript/collapsible-lists/button-open.png');

cursor:pointer;

}

img.button_closed{

content: url('http://code.stephenmorley.org/javascript/collapsible-lists/button-closed.png');

cursor:pointer;

}

JS

function CreateGroup(group_name)

{

// Create Button(Image)

$('td.' + group_name).prepend(" ");

// Add Padding to Data

$('tr.' + group_name).each(function () {

var first_td = $(this).children('td').first();

var padding_left = parseInt($(first_td).css('padding-left'));

$(first_td).css('padding-left', String(padding_left + 25) + 'px');

});

RestoreGroup(group_name);

// Tie toggle function to the button

$('img.' + group_name).click(function(){

ToggleGroup(group_name);

});

}

function ToggleGroup(group_name)

{

ToggleButton($('img.' + group_name));

RestoreGroup(group_name);

}

function RestoreGroup(group_name)

{

if ($('img.' + group_name).hasClass('button_open'))

{

// Open everything

$('tr.' + group_name).show();

// Close subgroups that been closed

$('tr.' + group_name).find('img.button_closed').each(function () {

sub_group_name = $(this).attr('class').split(/\s+/)[0];

//console.log(sub_group_name);

RestoreGroup(sub_group_name);

});

}

if ($('img.' + group_name).hasClass('button_closed'))

{

// Close everything

$('tr.' + group_name).hide();

}

}

function ToggleButton(button)

{

$(button).toggleClass('button_open');

$(button).toggleClass('button_closed');

}

CreateGroup('group1');

CreateGroup('group2');

CreateGroup('sub_group1');

CreateGroup('sub_group2');

CreateGroup('sub_sub_group1');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值