【发布时间】:2015-07-03 02:51:10
【问题描述】:
我有一个 jQuery 树报告,我正在尝试为其创建“展开/折叠所有”按钮。
当相应的按钮被按下并且工作正常时,以下两段代码被触发:
for (i = 1; i < 100; i++) {
var el = $('#dtt_2597807651112537_table tbody tr')[i - 1];
// store current level
var level = Number($(el).attr('dtt_level'));
// change icon
$(el).find('span.dtt_icon').removeClass('dtt_collapsed_span');
$(el).find('span.dtt_icon').addClass('dtt_expanded_span');
while ($($(el).next()).attr('dtt_level') != null) {
var el = $(el).next();
if ($(el).attr('dtt_level') == (level + 1)) {
// change display
el.removeClass('dtt_collapsed_tr');
el.addClass('dtt_expanded_tr');
} else if ($(el).attr('dtt_level') == level) {
break;
}
}
}
for (i = 1; i < 100; i++) {
// get related table row
var el = $('#dtt_2597807651112537_table tbody tr')[i - 1];
// store current level
var level = Number($(el).attr('dtt_level'));
// change icon
$(el).find('span.dtt_icon').addClass('dtt_collapsed_span');
$(el).find('span.dtt_icon').removeClass('dtt_expanded_span');
while ($($(el).next()).attr('dtt_level') != null) {
var el = $(el).next();
if ($(el).attr('dtt_level') > level) {
// change display
el.addClass('dtt_collapsed_tr');
el.removeClass('dtt_expanded_tr');
// change icon
$(el).find('span.dtt_icon').addClass('dtt_collapsed_span');
$(el).find('span.dtt_icon').removeClass('dtt_expanded_span');
} else if ($(el).attr('dtt_level') == level) {
break;
}
}
};
但是,我想知道是否有人有一个很好的方法:
1) 获取需要循环的行数 - 我只是将 100 作为一个大数字来证明我的代码有效,我不想将其增加到更大的数字。
2) 从页面源中获取类名 - “dtt_2597807651112537_table”中的大数字是应用程序生成的报告ID。这暂时是静态的,但如果它发生变化,我想消除任何问题。
谢谢。
【问题讨论】:
标签: javascript jquery tree collapse expand