Можно ли через DOM получить заголовок оси td, используя свойство оси header напрямую? - PullRequest
1 голос
/ 18 февраля 2012

Недавно я обнаружил, что я могу настроить ячейку таблицы на несколько осей, используя комбинацию свойства headers в td и свойства axis в любом связанном th. Пример:

<table>
    <caption>Country Toy Codes</caption>
    <thead>
        <tr>
            <th scope="col row"></th>
            <th scope="col" id="us" axis="country">US</th>
            <th scope="col" id="ca" axis="country">CA</th>
            <th scope="col" id="uk" axis="country">UK</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <th scope="row" id="robots" axis="toys">Robots</th>
            <td headers="us robots">ABC</td>
            <td headers="ca robots">DEF</td>
            <td headers="uk robots">GHI</td>
        </tr>
        <tr>
            <th scope="row" id="dolls" axis="toys">Dolls</th>
            <td headers="us dolls">JKL</td>
            <td headers="ca dolls">MNO</td>
            <td headers="uk dolls">PQR</td>
        </tr>
        <tr>
            <th scope="row" id="slinkys" axis="toys">Slinkys</th>
            <td headers="us slinkys">STU</td>
            <td headers="ca slinkys">VWX</td>
            <td headers="uk slinkys">YZ1</td>
        </tr>
        <tr>
            <th scope="row" id="legos" axis="toys">Legos</th>
            <td headers="us legos">AB1</td>
            <td headers="ca legos">CD1</td>
            <td headers="uk legos">EF1</td>
        </tr>
    </tbody>
</table>

Это имеет явные преимущества для невизуальных браузеров, но я подумал, что это также может быть полезно для javascript и css. Единственная проблема заключается в том, что я не вижу способа прямого доступа к типу оси идентификатора заголовка ячейки ни после выбора, ни для цели выбора.

В идеале я хотел бы сделать одно из следующего (грубый псевдо-код впереди):

  Selector:
      td['axis=toys']  // Would select all td's with a header id that resolves to a header having axis value "toys"

  Getter:
      $('td').axisValue("toys") // would return the value, if applicable, of header id of header value with axis value of toys.

Что касается геттера, я мог бы проходить каждый заголовок каждый раз и находить элемент из id в DOM, а затем значение оси, но если есть способ сделать это более напрямую, я уверен, что это также более оптимизировано браузером.

Для селектора самое близкое, что я могу придумать (в js), это взять заданное значение оси, найти все идентификаторы, используя это значение оси, а затем разделить запятыми каждый параметр, чтобы получить их все, например

[headers~=us], [headers~=ca], [headers~=uk]

Кто-нибудь знает, доступно ли имя оси идентификатора заголовка через метод или непосредственно в элементе td?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...