简体   繁体   English

如何获取单元格的相对标头?

[英]How can I get the relative header of a cell?

I have a very unusual table. 我有一张非常不寻常的桌子。 I am struggling to be able to return the relative header of a specific element, as per this http://jsfiddle.net/yh6C6/ 按照此http://jsfiddle.net/yh6C6/的规定,我正在努力能够返回特定元素的相对标头

The table structure is similar to the following: 该表的结构类似于以下内容:

<table border>
    <tbody>
        <tr>
            <th></th>
            <th></th>
            <th colspan="3">Parameter 1</th>
            <th colspan="2">Parameter 2</th>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td>
                <div>
                    <div>State 1.1</div>
                </div>
            </td>
            <td>
                <div>
                    <div>State 1.2</div>
                </div>
            </td>
            <td>
                <div>
                    <div>State 1.3</div>
                </div>
            </td>
            <td>
                <div>
                    <div>State 2.1</div>
                </div>
            </td>
            <td>
                <div>
                    <div>State 2.2</div>
                </div>
            </td>
        </tr>
        <tr>
            <th rowspan="2">Parameter 2</th>
            <td>State 2.1</td>
            <td contenteditable="true">-</td>
            <td contenteditable="true">-</td>
            <td contenteditable="true">-</td>
        </tr>
        <tr>
            <td>State 2.2</td>
            <td contenteditable="true">-</td>
            <td contenteditable="true">-</td>
            <td contenteditable="true">-</td>
        </tr>
        <tr>
            <th rowspan="3">Parameter 3</th>
            <td>State 3.1</td>
            <td contenteditable="true">-</td>
            <td contenteditable="true">-</td>
            <td contenteditable="true">-</td>
            <td contenteditable="true">-</td>
            <td contenteditable="true">-</td>
        </tr>
        <tr>
            <td>State 3.2</td>
            <td contenteditable="true">-</td>
            <td contenteditable="true">-</td>
            <td contenteditable="true">-</td>
            <td contenteditable="true">-</td>
            <td contenteditable="true">-</td>
        </tr>
        <tr>
            <td>State 3.3</td>
            <td contenteditable="true">-</td>
            <td contenteditable="true">-</td>
            <td contenteditable="true">-</td>
            <td contenteditable="true">-</td>
            <td contenteditable="true">-</td>
        </tr>
    </tbody>
</table>

Assuming you click on the 'contenteditable' cells, how can I return the row and column headers? 假设您单击“可编辑的内容”单元格,如何返回行标题和列标题? Please check the jsfiddle provided above. 请检查上面提供的jsfiddle

I've edited the fiddle to get the horizontal parameter. 我已经编辑了小提琴以获取水平参数。 Needed to add a class to each tr that contained a parameter name. 需要向每个包含参数名称的tr添加一个类。 Also coloured the selected tr to make it easier to visualize and debug what is being selected. 还为选定的tr着色,以使其更容易可视化和调试选定的内容。 Getting the vertical parameter name will be a different problem. 获取垂直参数名称将是另一个问题。

I was able to get it by doing the following: 我能够通过执行以下操作来获得它:

$(document).ready(function () {
    $('table').on('click', 'td[contenteditable]', function (e) {

        // Horizontal Parameter
        if ($(this).parent().has('th').length > 0) {
            hParameter = $(this).parent().find('th').text();
        } else {
            hParameter = $(this).parent().prevAll('tr').has('th').first().find('th').text();
        }
        $('#horizontal-parameter').text('H: ' + hParameter);

        // Vertical Parameter
        var thLocator = [],
            colCount = 1;
        $table = $('table');
        $table.find('tr:first th').each(function () {
            for (var i = 0; i < this.colSpan; i++) {
                thLocator.push(colCount);
            }
            colCount++;
        });

        vParameter = $table.find('tr:first th:nth-child(' + thLocator[$(this).index()] + ')').text();

        $('#vertical-parameter').text('V: ' + vParameter);

    });

});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM