MediaWiki:Gadget-collapsibleTables.js
外观
注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google Chrome、Firefox、Microsoft Edge及Safari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。
/**
* Collapsible tables
*
* 改动自//zh.wikipedia.org/w/index.php?title=MediaWiki:Gadget-collapsibleTables.js&oldid=29207188
* 算是还原了就有使用collapsible类的表格吧……
*/
var autoCollapse = 2;
var collapseCaption = wgULS('隐藏▲', '隱藏▲');
var expandCaption = wgULS('显示▼', '顯示▼');
var collapsed="collapsed";
function collapseTable( tableIndex,table )
{
var Table=table;
var Button=Table.find('#collapseButton' + tableIndex).first();
if ( !Table || !Button ) {
return false;
}
var Rows=Table.find("tr");
var Header=Table.find("th#collapsibleTableHeader"+tableIndex).first();
if(!Table.hasClass(collapsed))
{
Rows.each(function()
{
if($(this).children()!=Header)
{
$(this).css("display","none");
}
});
Button.text(expandCaption);
Table.addClass(collapsed);
}
else
{
Rows.each(function()
{
if($(this).children()!=Header)
{
$(this).css("display",Header.css("display"));
}
});
Button.text(collapseCaption);
Table.removeClass(collapsed);
}
}
function createClickHandler(tableIndex,table)
{
return function(e)
{
e.preventDefault();
collapseTable( tableIndex,table);
}
}
function createCollapseButtons() {
var tableIndex = 0;
var NavigationBoxes = {};
var tables=$("table");
tables.each(function()
{
if($(this).hasClass("collapsible"))
{
var HeaderRow=$(this).find("tr").first();
if ( !HeaderRow ) {
return;//用于跳过each()
}
var Header=HeaderRow.children("th").first();
if ( !Header ) {
return;//用于跳过each(
}
NavigationBoxes[tableIndex] = $(this);
$(this).attr( 'id', 'collapsibleTable' + tableIndex );
$(this).addClass(collapsed);
Header.attr("id","collapsibleTableHeader"+tableIndex);
var button=$("<span>");
var buttonlink=$("<a>");
button.css("float","right");
buttonlink.attr("href","#");
buttonlink.css("color",Header.css("color"));
buttonlink.attr("id",'collapseButton' + tableIndex);
buttonlink.text(collapseCaption);
button.append(buttonlink);
Header.append(button);
var clickhandler=createClickHandler( tableIndex,$(this));
$("th#collapsibleTableHeader"+tableIndex/* +","+"a#collapseButton" + tableIndex */)
.bind("click",clickhandler);
tableIndex++;
}
});
for ( var i = 0; i < tableIndex; i++ ) {
if ( NavigationBoxes[i].hasClass( 'collapsed' ) ||
( tableIndex >= autoCollapse && NavigationBoxes[i].hasClass( 'autocollapse' ) )
) {
collapseTable( i );
}
}
}
$( createCollapseButtons );