Я разработал этот аккуратный кусочек кода, который задал элемент и правильно отформатированную таблицу, создает выпадающее меню на элементе, что позволяет пользователю переключаться между представлениями столбцов.Javascript html table hidding columns
Я не могу понять, как сделать изменения (какие столбцы остаются скрытыми) сохраняется при смене страницы, так как это обычный шаблон для таблицы на странице с разбиением на страницы.
скрипку: https://jsfiddle.net/mssrq8ah/
моего HTML разметка:
<table id="table">
<thead>
<tr>
<th>h1</th><th>h2</th><th>h3</th>
</tr>
</thead>
<tbody>
<tr>
<td>a1</td><td>a2</td><td>a3</td>
</tr>
<tr>
<td>b1</td><td>b2</td><td>b3</td>
</tr>
</tbody>
</table>
<button id="list">drop</button>
моя функция JS:
table_hide("#list","#table")
function table_hide(button , table)
{
jQuery(button).attr("data-toggle","dropdown");
jQuery(button).addClass("dropdown-toggle");
jQuery(button).wrap("<div class='btn-group'>");
var list = "";
jQuery("thead").find("tr").first().find("th").each(function(index,element){
list = list + "<li>" +
"<div class='checkbox col-md-6'><label><input type='checkbox' checked value='"+index+"' class='td_hide'>"+jQuery(element).text()+"</label></div>"+
"</li>";
});
jQuery(button).after("<ul class='dropdown-menu col-md-12'>"+list+"</ul>");
jQuery(".td_hide").on("click",function(){
var target_column = jQuery(this).val();
jQuery("tr").each(function(index , element){
jQuery(this).find("th , td").eq(target_column).toggle();
});
});
jQuery(".dropdown-menu").find("select , .ws-popover-opener , .step-control").on("click",function(e){
e.stopPropagation();
});
}
, если вообще возможно, я хотел бы, чтобы избежать каких-либо более необходимых библиотек, как я умысел использовать его на CMS, а jQuery/bootstrap в наши дни является стандартом.
'как сделать изменения (те столбцы, которые остаются скрытыми) сохраняются при смене страницы ... Если вы заинтересованы в сохранении чего-либо, вам нужно посмотреть на использование локального хранилища, куки или базы данных. Когда вы обновляете страницу, все данные JS будут потеряны. – AdamJeffers
. Я бы предложил вам сохранить состояние (видимое или нет) всех столбцов в localStorage и после загрузки страницы, которое вы читаете из этого localStorage, и установить видимость. localStorage прост в использовании - просто выполните localStorage.setItem и localStorage.getItem. Вы можете получить текущее состояние столбца, выполнив jQuery («tr»). First(). Find ('th, td'). Is (': visible') – metal03326
Спасибо большое, ребята, я разместил ниже мое окончательное решение – Elentriel