- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
目前我有这个工作代码:http://jsfiddle.net/tarabyte/s8Qds/3/
Javascript:
$(function() {
(function generateStyleSheet(len){
var styles = [], i = 0;
for(; i < len; i++) {
styles.push('.hide-' + i + ' .column-' + i + ' {display: none;}') ;
}
$('<style>' + styles.join('\n') + '</style>').appendTo(document.body);
}(100))
function Toggler(idx, text, table, togglers) {
this.idx = idx;
this.text = $.trim(text);
this.table = table;
this.togglers = togglers;
this.init();
}
Toggler.prototype.init = function() {
this.element = $('<span class="toggler" >' + this.text + '</span>').appendTo(this.togglers).data('toggler', this);
};
Toggler.prototype.toggle = function() {
this.element.toggleClass('pressed');
this.table.toggleClass('hide-'+this.idx);
};
function Togglers(el, table, hidden) {
this.el = el.jQuery ? el : $(el);
this.table = table.jQuery ? table : $(table);
this.togglers = {};
this.hidden = hidden||[];
this.init();
}
Togglers.prototype.init = function() {
var columns = 0, me = this;
this.el.on('click', '.toggler', function(e){
$(e.target).data('toggler').toggle();
});
this.table.find('th').each(function(idx, header){
header = $(header);
me.add(idx, header.text());
header.addClass('column-' + idx);
columns++;
}).end()
.find('td').each(function(idx, td) {
$(td).addClass('column-' + (idx%columns));
});
$.each(this.hidden, function(_, name) {
me.toggle(name);
});
};
Togglers.prototype.toggle = function(name) {
var toggler = this.togglers[name];
if(toggler) {
toggler.toggle()
}
else {
console.warn('Unable to find column with name: ' + name);
}
};
Togglers.prototype.add = function(idx, name) {
var toggler = new Toggler(idx, name, this.table, this.el);
this.togglers[toggler.text] = toggler;
};
var togglers = new Togglers('#togglers', $('#table'), ['Color']);
togglers.toggle('Number');
})
CSS
.toggler {
display: inline-block;
padding: 5px 10px;
margin: 2px;
border: 1px solid black;
border-radius: 2px;
cursor: pointer;
}
.toggler.pressed {
background-color: #BBB;
}
HTML
<div id="togglers"></div>
<table id="table">
<tr>
<th class="Title">ID</th>
<th class="Title">Color</th>
<th class="Title">Number</th>
</tr>
<tr>
<td>1</td>
<td>#990000</td>
<td>C001</td>
</tr>
<tr>
<td>2</td>
<td>#009900</td>
<td>C002</td>
</tr>
<tr>
<td>3</td>
<td>#FFFFFF</td>
<td>C003</td>
</tr>
<tr>
<td>4</td>
<td>#000000</td>
<td>C004</td>
</tr>
</table>
现在我想做的是将“颜色”和“数字”分组。所以你会看到 ID(隐藏/显示 ID)更多信息(隐藏显示颜色和数字)
默认情况下我不知道列的顺序,我只知道要分组的列的名称。
我试过这样的事情:http://jsfiddle.net/Ap9sQ/6/我更改了一些值,因此它可以在我的网站上运行。问题是默认情况下我无法将“更多信息”设为灰色,当您单击它时呈绿色(或)灰色...
最佳答案
我有解决方案,但这是好的代码吗?
不要看var的名字,我会用一个更好的名字来改变它们。
只有javascript(其他的不是那么重要)
$(function() {
(function generateStyleSheet(len){
var styles = [], i = 0;
for(; i < len; i++) {
styles.push('.hide-' + i + ' .column-' + i + ' {display: none;}') ;
}
$('<style>' + styles.join('\n') + '</style>').appendTo(document.body);
}(100))
function Toggler(idx, text, table, togglers) {
this.idx = idx;
this.text = $.trim(text);
this.table = table;
this.togglers = togglers;
this.init();
}
var navigation = 1;
var nav;
var DatesGroupNavigation = [];
var DatesGroupNavigation2 = [];
Toggler.prototype.init = function() {
this.element = $('<span class="toggler navigation'+navigation+'" >' + this.text + '</span>').appendTo(this.togglers).data('toggler', this);
switch (0){
case this.text.indexOf("Title01"):
case this.text.indexOf("Title02"):
case this.text.indexOf("Title03"):
case this.text.indexOf("Title04"):
DatesGroupNavigation.push(navigation);
break;
case this.text.indexOf("Title1"):
case this.text.indexOf("Title2"):
case this.text.indexOf("Title3"):
case this.text.indexOf("Title4"):
DatesGroupNavigation2.push(navigation);
break;
}
navigation++;
};
Toggler.prototype.toggle = function() {
this.element.toggleClass('pressed');
this.table.toggleClass('hide-'+this.idx);
};
function Togglers(el, table, hidden) {
this.el = el.jQuery ? el : $(el);
this.table = table.jQuery ? table : $(table);
this.togglers = {};
this.hidden = hidden||[];
this.init();
}
var DatesGroupColumns = [];
var DatesGroupColumns2 = [];
var title;
Togglers.prototype.init = function() {
var columns = 0, me = this;
this.el.on('click', '.toggler', function(e){
$(e.target).data('toggler').toggle();
});
this.table.find('th').each(function(idx, header){
if(columns>0){
header = $(header);
me.add(idx, header.text());
header.addClass('column-' + idx);
title = header.text();
switch (0){
case title.indexOf("Title01"):
case title.indexOf("Title02"):
case title.indexOf("Title03"):
case title.indexOf("Title04"):
console.warn(idx);
DatesGroupColumns.push(idx);
break;
case title.indexOf("Title1"):
case title.indexOf("Title2"):
case title.indexOf("Title3"):
case title.indexOf("Title4"):
console.warn(idx);
DatesGroupColumns2.push(idx);
break;
}
}
columns++;
}).end()
.find('td').each(function(idx, td) {
$(td).addClass('column-' + (idx%columns));
});
$.each(this.hidden, function(_, name) {
me.toggle(name);
});
};
Togglers.prototype.toggle = function(name) {
var toggler = this.togglers[name];
if(toggler) {
toggler.toggle()
}
else {
console.warn('Unable to find column with name: ' + name);
}
};
Togglers.prototype.add = function(idx, name) {
var toggler = new Toggler(idx, name, this.table, this.el);
this.togglers[toggler.text] = toggler;
};
var togglers = new Togglers('#togglers', $('#table'), ['Color']);
/*togglers.toggle('Client');*/
var Loop;
DatesGroupNavigationLength = DatesGroupNavigation.length;
for ( Loop = 0; Loop < DatesGroupNavigationLength; Loop++) {
console.warn(DatesGroupNavigation[Loop]);
$('.navigation'+DatesGroupNavigation[Loop]).addClass('HideColumn');
}
console.warn(DatesGroupColumns);
Loop = 0;
DatesGroupColumnsLength = DatesGroupColumns.length;
$('<span class="togglerExtra navigation'+navigation+'" >All title with 0</span>').appendTo($("#togglers")).click(function () {
for ( Loop = 0; Loop < DatesGroupColumnsLength; Loop++) {
console.warn(Loop + " - test: " + DatesGroupColumns[Loop]);
$('.navigation'+ DatesGroupColumns[Loop]).data('toggler').toggle();
}
$('.navigation'+navigation).toggleClass("pressed");
});
Loop = 0;
var navigation2 = navigation+1;
DatesGroupNavigationLength2 = DatesGroupNavigation2.length;
for ( Loop = 0; Loop < DatesGroupNavigationLength2; Loop++) {
console.warn(DatesGroupNavigation2[Loop]);
$('.navigation'+DatesGroupNavigation2[Loop]).addClass('HideColumn');
}
console.warn(DatesGroupColumns2);
Loop = 0;
DatesGroupColumnsLength2 = DatesGroupColumns2.length;
$('<span class="togglerExtra navigation'+navigation2+'" >All title without 0</span>').appendTo($("#togglers")).click(function () {
for ( Loop = 0; Loop < DatesGroupColumnsLength2; Loop++) {
console.warn(Loop + " - test: " + DatesGroupColumns2[Loop]);
$('.navigation'+ DatesGroupColumns2[Loop]).data('toggler').toggle();
}
$('.navigation'+navigation2).toggleClass("pressed");
});
})
关于javascript - 隐藏/显示列 - 如何对列进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24628809/
我正在 csv 上使用 hadoop 来分析一些数据。我使用sql/mysql(不确定)来分析数据,现在陷入了僵局。 我花了好几个小时在谷歌上搜索,却没有找到任何相关的东西。我需要一个查询,在该查询中
我正在为 Bootstrap 网格布局的“简单”任务而苦苦挣扎。我希望在大视口(viewport)上有 4 列,然后在中型设备上有 2 列,最后在较小的设备上只有 1 列。 当我测试我的代码片段时,似
对于这个令人困惑的标题,我深表歉意,我想不出这个问题的正确措辞。相反,我只会给你背景信息和目标: 这是在一个表中,一个人可能有也可能没有多行数据,这些行可能包含相同的 activity_id 值,也可
具有 3 列的数据库表 - A int , B int , C int 我的问题是: 如何使用 Sequelize 结果找到 A > B + C const countTasks = await Ta
我在通过以下功能编写此查询时遇到问题: 首先按第 2 列 DESC 排序,然后从“不同的第 1 列”中选择 只有 Column1 是 DISTINCT 此查询没有帮助,因为它首先从第 1 列中进行选择
使用 Bootstrap 非常有趣和有帮助,目前我在创建以下需求时遇到问题。 “使用 bootstrap 在桌面上有 4 列,在平板电脑上有 2 列,在移动设备上有 1 列”谁能告诉我正确的结构 最佳
我是 R 新手,正在问一个非常基本的问题。当然,我在尝试从所提供的示例中获取指导的同时做了功课here和 here ,但无法在我的案例中实现这个想法,即可能是由于我的问题中的比较维度更大。 我的实
通常我会使用 R 并执行 merge.by,但这个文件似乎太大了,部门中的任何一台计算机都无法处理它! (任何从事遗传学工作的人的附加信息)本质上,插补似乎删除了 snp ID 的 rs 数字,我只剩
我有一个 df , delta1 delta2 0 -1 2 0 -1 0 0 0 我想知道如何分配 delt
您好,我想知道是否可以执行以下操作。显然,我已经尝试在 phpMyAdmin 中运行它,但出现错误。也许还有另一种方式来编写此查询。 SELECT * FROM eat_eat_restaurants
我有 2 个列表(标题和数据值)。我想要将数据值列 1 匹配并替换为头文件列 1,以获得与 dataValue 列 1 和标题值列 2 匹配的值 头文件 TotalLoad,M0001001 Hois
我有两个不同长度的文件,file2 是一个很大的引用文件,我从中提取文件 1 的数据。 我有一行 awk,我通常会对其进行调整以在我的文件中进行查找和替换,但它总是在同一列中进行查找和替换。 所以对于
假设我有两个表,如下所示。 create table contract( c_ID number(1) primary key, c_name varchar2(50) not
我有一个带有 varchar 列的 H2 表,其检查约束定义如下: CONSTRAINT my_constraint CHECK (varchar_field <> '') 以下插入语句失败,但当我删
这是最少量的代码,可以清楚地说明我的问题: One Two Three 前 2 个 div 应该是 2 个左列。第三个应该占据页面的其余部分。最后,我将添加选项来隐藏和
在 Azure 中的 Log Analytics 中,我为 VM Heartbeat 选择一个预定义查询,我在编辑器中运行查询正常,但当我去创建警报时,我不断收到警报“查询未返回 TimeGenera
在 Azure 中的 Log Analytics 中,我为 VM Heartbeat 选择一个预定义查询,我在编辑器中运行查询正常,但当我去创建警报时,我不断收到警报“查询未返回 TimeGenera
今天我开始使用 JexcelApi 并遇到了这个:当您尝试从特定位置获取元素时,不是像您通常期望的那样使用sheet.getCell(row,col),而是使用sheet.getCell(col,ro
我有一个包含 28 列的数据库。第一列是代码,第二列是名称,其余是值。 public void displayData() { con.Open(); MySqlDataAdapter
我很沮丧:每当我缩小这个网页时,一切都变得一团糟。我如何将网页居中,以便我可以缩小并且元素不会被错误定位。 (它应该是 2 列,但所有内容都合并为 1)我试过 但由于某种原因,这不起作用。 www.o
我是一名优秀的程序员,十分优秀!