什么基于jquery的表插件可以隐藏子行?

时间:2012-09-03 15:00:05

标签: javascript jquery jquery-plugins jquery-mobile

我需要将excel宏转换为jquery代码,如果要在column2中键入值,则需要单击加号展开并显示子行以修改column2列无法修改。在展开父行之前,不能直接修改column2的值,因为有许多子行属于父行,比如Car。名称,模型,代码的值是现有的,它们是主数据,无需键入或修改。

请参阅快照:

enter image description here

enter image description here

除了修改子行中的值之外,我还需要知道修改了哪些子行以及这些行的值。最初,可编辑列为空。当您单击减号时,子行可以再次折叠,但修改后的值不会丢失,再次展开时它们仍然存在。最后一个要求是它的交叉设备,代码必须在PC,手机,平板电脑上运行良好。这可能吗?

非常感谢。

1 个答案:

答案 0 :(得分:0)

您不需要使用插件来执行此操作,这通常使用几行简单代码完成。

DEMO:http://jsfiddle.net/FHWaw/2/

在本演示中,我在行和单元格上指定了一个标识“section”的属性(可以打开或关闭的东西):

<table>
<tr><td section-opener=mysection1 section-state=open> SOME HEADER </td></tr>
<tr section-content=mysection1><td>some text</td><td>some other text</td></tr>
<tr section-content=mysection1><td>some AAA</td><td>some zaaother text</td></tr>
<tr section-content=mysection1><td>some text</td><td>some other text</td></tr>
<tr><td section-opener=anothersection section-state=close> Hu ? </td></tr>
<tr section-content=anothersection><td>some text</td><td>some other text</td></tr>
<tr section-content=anothersection><td>some text</td><td>some other text</td></tr>
</table>
​

(在此示例中,第一部分首先打开而第二部分打开)

然后我有了这个,点击后,决定更改行的类,以便让它们可见:

$('body').on('click', 'td[section-opener]', function() {
    changeState($(this).attr('section-opener'));
});

changeState = function(sectionId, newstate) {
    var $opener = $('td[section-opener="'+sectionId+'"]');
    var oldstate = $opener.attr('section-state');
    if (oldstate==newstate) return newstate;
    newstate = oldstate=='open' ? 'close' : 'open'; // sanitization
    $opener.attr('section-state', newstate);
    $('tr[section-content="'+sectionId+'"]').attr('section-state', newstate);
    return newstate;
};​

我有一个CSS,主要是隐藏封闭的部分(并且开放者可以清楚识别):

td[section-opener] {
    font-weight: bold;
    cursor: pointer;
}
td[section-opener][section-state="close"]:before {
    color: #ccc;
    content: " \25B6  ";
}
td[section-opener][section-state="close"]:hover:before{
    color: #aaa;
    content: " \25B6  ";
}
td[section-opener][section-state="open"]:before {
    content: "\25BC  ";
}
tr[section-content][section-state="close"] {
    display: none;
}
tr[section-content][section-state="open"] {
    display: table-row;
}

由于不会删除任何内容,因此关闭后再打开时,编辑后的输入不会丢失。