我有我試圖創建「展開/摺疊所有」按鈕一個jQuery樹報告。使用Javascript - 動態展開/收起所有
下當按下相應的按鈕兩段代碼被解僱和工作帶來極大的:如果任何人有一個很好的方式,以
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。目前這是靜態的,但如果它發生變化,我想消除任何問題。
謝謝。
謝謝,這看起來朝着正確方向邁出了巨大的一步。作爲PL/SQL開發人員,我直接進入循環。 所以,我說'$( 「#dtt_2597807651112537_table TBODY TR」)//選擇元素 .toggleClass( 'dtt_collapsed_tr',暈倒)//做的東西給他們 .toggleClass( 'dtt_expanded_tr',暈倒!);' 我的JavaScript和這崩潰的一切 - 它消失了。有沒有一種方法來選擇正確的沒有循環和檢查水平像在我的例子? (基本上一切都在那裏dtt_level不是1) –
這是我現在想: '$( 「!表[ID^= dtt_] TBODY TR dtt_level = 1」)//選擇元素 .toggleClass( 'dtt_collapsed_tr',摺疊)//向他們做東西 .toggleClass('dtt_expanded_tr',!collapsed);' 哪個不行? - 我在正確的行嗎? –
@ls_dev幾乎。 '$(「table [id^= dtt_] tbody tr [dtt_level!= 1]」)' - 注意訪問屬性的方括號(就像表中的id一樣)。打開瀏覽器控制檯並使用不同的jQuery選擇器進行遊戲是獲得感覺的好方法。 – Tomalak