Можете ли вы изменить выходной код, чтобы использовать UL вместо таблицы?
Если вы можете, то вы можете взглянуть на jQuery Treeview плагин . Это то, что я использую для всех видов деревьев.
На самом деле, семантически более целесообразно использовать UL, а не таблицу для древовидной структуры, но в вашем случае это будет зависеть от возможности изменить код вообще.
В любом случае, если вы не можете, я думаю, вы не можете исчезнуть из TR ... У меня была похожая проблема в прошлом, поэтому я бы предложил вместо этого исчезнуть из внутреннего стола, а затем скрыть TR.
Кроме того, нет смысла вызывать end () 3 раза. Это быстрее и более читабельно, если вы просто сделаете $ (this) снова после того, как отобразите / скроете внутреннюю таблицу:
var innerTable = $(this).parent().parent().next().find("table");
if ($(this).data("visible")) {
innerTable.fadeOut();
innerTable.parent().hide();
$(this)
.data("visible", false)
.text("+");
} else {
innerTable.parent().show();
innerTable.fadeIn();
$(this)
.data("visible", true)
.text("-");
}