Ссылка рефакторинга, чтобы показать / скрыть строку таблицы - PullRequest
2 голосов
/ 16 мая 2010

У меня есть таблица со строками, которые могут быть скрыты пользователем. Это реализовано так:

Markup:

<table>
   <tr>
      <td>
         <table style="margin-left: auto; text-align: right;">
            <tr>
               <td class="stats-hide">
                  <a href="#" onclick="hideStats();">Hide</a>
               </td>
               <td class="stats-show" style="display: none;">
                  <a href="#" onclick="showStats();">Show</a>
               </td>
            </tr>
         </table>
      </td>
   </tr>
   <tr class="stats-hide">
      <td>
        <!-- data -->
      </td>
   </tr>
</table>

И код JQuery:

<script type="text/javascript" language="javascript">
    function hideStats() {
        hideControls(true, $('.stats-hide'));
        hideControls(false, $('.stats-show'));
    }

    function showStats() {
        hideControls(false, $('.stats-hide'));
        hideControls(true, $('.stats-show'));
    }

    function hideControls(value, arr) {
        $(arr).each(function () {
            if (value) {
                $(this).hide();
            }
            else {
                $(this).show();
            }
        });
 }
</script>

Как реализовать такое же поведение с одной, единственной ссылкой и одним, возможно, CSS-классом?

Моя идея - хранить где-нибудь логическую переменную и переключать управление видимостью относительно этой переменной. Есть еще?

Ответы [ 3 ]

2 голосов
/ 16 мая 2010

Используйте переключатель, как упомянуто в приведенном выше сообщении, но используйте «tbody» вместо «tr», чтобы строки можно было скрыть / показать при необходимости.

2 голосов
/ 16 мая 2010

Не работает ли скрывающаяся строка в IE? Какая версия jQuery и браузер вызывает проблемы?

Я создал пример , используя переключатель, как предложено @Galen, и он работает на Chrome, Firefox и Safari. У меня нет доступа к IE.

Вот код:

HTML

<table>
   <tr>
      <td>
         <table class="data">
            <tr>
               <td class="stats-hide">
                  <a href="#" class="toggle-stats">Hide</a>
               </td>
               <td class="stats-show">
                  <a href="#" class="toggle-stats">Show</a>
               </td>
            </tr>
         </table>
      </td>
   </tr>
   <tr class="stats-hide">
      <td>
        Some Data
      </td>
   </tr>
</table>

Javascript

$(".toggle-stats").click(function() {
    $(".stats-hide, .stats-show").toggle();
});
​
1 голос
/ 16 мая 2010

Вы можете использовать jquery toggle , чтобы переключаться между скрытием и отображением объектов с помощью одной ссылки. Вам не нужно хранить какие-либо переменные.

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