MediaWiki:Common.js
Appearance
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/* Any JavaScript here will be loaded for all users on every page load. */
#Filterable tables
mw.loader.using(['jquery'], function () {
$(document).ready(function () {
function addFiltersToTable(table) {
var thead = $(table).find("thead");
if (thead.length === 0) {
// If no thead exists, create one from the first row
var firstRow = $(table).find("tr:first");
thead = $("<thead></thead>").append(firstRow.clone());
$(table).prepend(thead);
}
var headerRow = thead.find("tr:first");
var filterRow = $("<tr></tr>");
headerRow.find("th").each(function (colIndex) {
var filterCell = $("<th></th>");
var input = $("<input>").attr({
"type": "text",
"placeholder": "Filter...",
"class": "table-filter"
});
input.on("keyup", function () {
var filterText = $(this).val().toLowerCase();
$(table).find("tbody tr").each(function () {
var cellText = $(this).find("td").eq(colIndex).text().toLowerCase();
$(this).toggle(cellText.indexOf(filterText) > -1);
});
});
filterCell.append(input);
filterRow.append(filterCell);
});
thead.append(filterRow);
}
// Apply to all tables with class 'filterable-table'
$("table.filterable-table").each(function () {
addFiltersToTable(this);
});
});
});