Javascript-форум (https://javascript.ru/forum/)
-   (X)HTML/CSS (https://javascript.ru/forum/xhtml-html-css/)
-   -   Как грамотно прописать существующий скрипт в тройном использовании? (https://javascript.ru/forum/xhtml-html-css/67016-kak-gramotno-propisat-sushhestvuyushhijj-skript-v-trojjnom-ispolzovanii.html)

JAMLIGHT 23.01.2017 15:38

Как грамотно прописать существующий скрипт в тройном использовании?
 
Нашёл ,значит, подходящий скрипт для скрытия строк таблицы :
<table border="1">
  <tr class="spoil">
    <td>можно</td>
    <td>развернуть</td>
  </tr>
  <tr class="hide">
    <td>скрытые</td>
    <td>строки</td>
  </tr>
  <tr class="hide">
    <td>скрытые</td>
    <td>строки</td>
  </tr>
</table>


$(function(){
$('.spoil').click(function(){
$('.hide').toggle();
})
})


[style]
table {
width:600px;
border:1px;
}
.hide {
display:none;
}
[/style]

Использовал,значит, данный код для скрытия строк по разделам таблицы -что то вроде фильтра, однако применил его к 5ти разделам -раскопипастил на 5 аналогичных скриптов с указанием порядковых номеров для классов spoil, hide в каждом скрываемом разделе( в первом скрипт с классами spoil1,hide1 ,во втором-spoil2,hide2 и т.д.). Наверно это ,как говорится,не по фэншую, поэтому вопрос-как прописать один единый код скрипта для 5ти(или более) пар классов?

ksa 23.01.2017 16:51

Цитата:

Сообщение от JAMLIGHT
поэтому вопрос-как прописать один единый код скрипта для 5ти(или более) пар классов?

Нужно знать некую закономерность для определения "зоны действия" для скрытия и показа соответствующих элементов.
А ты про это еще не рассказал. И пример для этого не сделал... :no:

рони 23.01.2017 17:02

:-?
Цитата:

Сообщение от JAMLIGHT
$(this).nextAll('.hide').toggle();


JAMLIGHT 07.02.2017 21:38

Тут получается у вас что скрываемые строками являются все те hide которые прописаны после кликнутого spoil(nextAll), тоесть первый открывает все, второй все кроме первого , третий все-кроме первого и второго и тд. А как скрывать spoil1-hide1,spoil2-hide2 и тд?

рони 07.02.2017 21:46

JAMLIGHT,
не осилил но скорее всего вам нужно
форум поиск открывашка

JAMLIGHT 07.02.2017 22:03

просто скрипт нужен подобный но немного другой.типа фильтр строк

рони 07.02.2017 22:10

JAMLIGHT,
делайте макет и описание ...
фильтраций для таблиц тоже много на форуме

JAMLIGHT 07.02.2017 22:17

я полагаю должен быть аналогичный простой скрипт только с переменной для классов spoil и hide соответственно. макет я дал вполне рабочий правда с раскопированным скриптом для каждой пары классов

рони 07.02.2017 22:19

Цитата:

Сообщение от JAMLIGHT
с переменной для классов spoil и hide соответственно

Цитата:

Сообщение от рони
форум поиск открывашка

300 и более вариантов

рони 07.02.2017 22:22

JAMLIGHT,
когда надоест перебрать варианты сделайте макет
Цитата:

Сообщение от ksa
Нужно знать некую закономерность для определения "зоны действия" для скрытия и показа соответствующих элементов.


JAMLIGHT 07.02.2017 22:28

закономерность в порядковом номере для общей переменной

JAMLIGHT 07.02.2017 22:31

<table border="1">
  <tr class="spoil1">
    <td>можно</td>
    <td>развернуть</td>
  </tr>
  <tr class="hide1">
    <td>скрытые</td>
    <td>строки</td>
  </tr>1
  <tr class="hide1">
    <td>скрытые</td>
    <td>строки</td>
  </tr>
  <tr class="spoil2">
    <td>можно</td>
    <td>развернуть</td>
  </tr>
  <tr class="hide2">
    <td>скрытые</td>
    <td>строки</td>
  </tr>
  <tr class="hide2">
    <td>скрытые</td>
    <td>строки</td>
  </tr>
  <tr class="spoil3">
    <td>можно</td>
    <td>развернуть</td>
  </tr>
  <tr class="hide3">
    <td>скрытые</td>
    <td>строки</td>
  </tr>
  <tr class="hide3">
    <td>скрытые</td>
    <td>строки</td>
  </tr>
</table>


Пропиши скрипт

рони 07.02.2017 22:38

JAMLIGHT,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  table {
 width:600px;
 border:1px;
 }
 .hide {
 display:none;
 }

  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
$(function(){
$('.spoil').click(function(){
$(this).nextUntil('.spoil').toggle();
})
})

  </script>
</head>

<body>
<table border="1">
  <tr class="spoil">
    <td>можно</td>
    <td>развернуть</td>
  </tr>
  <tr class="hide">
    <td>скрытые</td>
    <td>строки</td>
  </tr>
  <tr class="hide">
    <td>скрытые</td>
    <td>строки</td>
  </tr>
  <tr class="spoil">
    <td>можно</td>
    <td>развернуть</td>
  </tr>
  <tr class="hide">
    <td>скрытые</td>
    <td>строки</td>
  </tr>
  <tr class="hide">
    <td>скрытые</td>
    <td>строки</td>
  </tr>
  <tr class="spoil">
    <td>можно</td>
    <td>развернуть</td>
  </tr>
  <tr class="hide">
    <td>скрытые</td>
    <td>строки</td>
  </tr>
  <tr class="hide">
    <td>скрытые</td>
    <td>строки</td>
  </tr>
</table>


</body>
</html>

JAMLIGHT 07.02.2017 22:40

тем что он скрывает ВСЕ строки с классом hide прописанные после кликнутой строки с классом spoil. А надо не все, а определённые. Тобишь надо чтобы spoil1 скрывал Hide1, spoil 2-Hide2 и тд Для этой цели я прописал 5 скриптов,но это не дело сами понимаете

рони 07.02.2017 22:47

JAMLIGHT,
смотрите макет выше.

JAMLIGHT 07.02.2017 22:54

К примеру мне надо разворачивающиеся строки в таблице с городами со средним заработком. Например Средний заработок 10 000 рублей-Разворачивается(скрываетс ) 5 городов. Средний заработок 15 000 Руб-7 городов. А если у меня этих средних заработков в таблице 50 штук я что 50 аналогичных скриптов буду в код писать? . Если так копипастить скрипт то он займёт больше разметки
\Спасибо щас потестю

рони 07.02.2017 23:02

JAMLIGHT,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  table {
 width:600px;
 border:1px;
 }
 [class*="hide"] {
 display:none;
 }

  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
$(function(){
$('.spoil').click(function(){
var cls = $(this).data("cls")
$(cls).toggle();
})
})

  </script>
</head>

<body>
<table border="1">
  <tr class="spoil"  data-cls=".hide1">
    <td>можно</td>
    <td>развернуть</td>
  </tr>
  <tr class="hide1">
    <td>скрытые</td>
    <td>строки</td>
  </tr>
  <tr class="hide1">
    <td>скрытые</td>
    <td>строки</td>
  </tr>
  <tr class="spoil" data-cls=".hide2">
    <td>можно</td>
    <td>развернуть</td>
  </tr>
  <tr class="hide2">
    <td>скрытые</td>
    <td>строки</td>
  </tr>
  <tr class="hide2">
    <td>скрытые</td>
    <td>строки</td>
  </tr>
  <tr class="spoil" data-cls=".hide3">
    <td>можно</td>
    <td>развернуть</td>
  </tr>
  <tr class="hide3">
    <td>скрытые</td>
    <td>строки</td>
  </tr>
  <tr class="hide3">
    <td>скрытые</td>
    <td>строки</td>
  </tr>
</table>



</body>
</html>

JAMLIGHT 07.02.2017 23:04

То что надо. Ценю

JAMLIGHT 07.02.2017 23:11

а чем эти 2 варианта отличаются?

рони 07.02.2017 23:17

JAMLIGHT,
:blink: тем что для второго варианта пост№17 неважно где будут находится открываемые строки

JAMLIGHT 07.02.2017 23:27

вижу. второй вариант более гибкий . Грамотно. спасибо. вставлю код себе на сайт. Можете подписать автора

JAMLIGHT 23.02.2017 14:48

Потестил я эти варианты- не подходят потому что мне надо чтобы скрывающим элементом по клику была не строка а ячейка

JAMLIGHT 23.02.2017 15:16

<table border="1" >
   
        <thead>
        
            <tr>

                <th colspan="6">
                
                <table><thead><tr>
        
                <td>Надо развернуть1</td>
          
                <td>Надо развернуть2</td>
          
                <td>Надо развернуть3</td>
          
                <td>Надо развернуть4</td>
          
                <td>Надо развернуть5</td>
          
                <td>Надо развернуть6</td>
             
                </tr></thead></table>
                    
                </th>

           </tr>
              
        </thead>
            
        <tbody>

            <tr>

                <th>Ск</th>

                <th>ры</th>

                <th>та</th>

                <th>я ст</th>

                <th>рок</th>

                <th>а 1</th>

           </tr>

           <tr>

                <th>Ск</th>

                <th>ры</th>

                <th>та</th>

                <th>я ст</th>

                <th>рок</th>

                <th>а 2</th>

            </tr>

            <tr>

                <th>Ск</th>

                <th>ры</th>

                <th>та</th>

                <th>я ст</th>

                <th>рок</th>

                <th>а 3</th>

            </tr>

            <tr>

                <th>Ск</th>

                <th>ры</th>

                <th>та</th>

                <th>я ст</th>

                <th>рок</th>

                <th>а 4</th>

            </tr>
            
            <tr>

                <th>Ск</th>

                <th>ры</th>

                <th>та</th>

                <th>я ст</th>

                <th>рок</th>

                <th>а 5</th>

            </tr>

            <tr>

                <th>Ск</th>

                <th>ры</th>

                <th>та</th>

                <th>я ст</th>

                <th>рок</th>

                <th>а 6</th>

            </tr>
       </tbody>

    </table>

JAMLIGHT 23.02.2017 15:17

Как для такой таблицы прописать скрипт?

рони 23.02.2017 15:33

JAMLIGHT,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
    .content tr {
      display: none;
    }

  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <script>

$(function() {
$('.toggle  td').click(function(){
var i = $('.toggle  td').index(this);
$('.content tr').eq(i).toggle();
})});
  </script>
</head>

<body>
<table border="1" >

        <thead>

            <tr>

                <th colspan="6">

                <table><thead><tr class="toggle">

                <td>Надо развернуть1</td>

                <td>Надо развернуть2</td>

                <td>Надо развернуть3</td>

                <td>Надо развернуть4</td>

                <td>Надо развернуть5</td>

                <td>Надо развернуть6</td>

                </tr></thead></table>

                </th>

           </tr>

        </thead>

        <tbody class="content">

            <tr>

                <th>Ск</th>

                <th>ры</th>

                <th>та</th>

                <th>я ст</th>

                <th>рок</th>

                <th>а 1</th>

           </tr>

           <tr>

                <th>Ск</th>

                <th>ры</th>

                <th>та</th>

                <th>я ст</th>

                <th>рок</th>

                <th>а 2</th>

            </tr>

            <tr>

                <th>Ск</th>

                <th>ры</th>

                <th>та</th>

                <th>я ст</th>

                <th>рок</th>

                <th>а 3</th>

            </tr>

            <tr>

                <th>Ск</th>

                <th>ры</th>

                <th>та</th>

                <th>я ст</th>

                <th>рок</th>

                <th>а 4</th>

            </tr>

            <tr>

                <th>Ск</th>

                <th>ры</th>

                <th>та</th>

                <th>я ст</th>

                <th>рок</th>

                <th>а 5</th>

            </tr>

            <tr>

                <th>Ск</th>

                <th>ры</th>

                <th>та</th>

                <th>я ст</th>

                <th>рок</th>

                <th>а 6</th>

            </tr>
       </tbody>

    </table>


</body>
</html>

JAMLIGHT 23.02.2017 18:07

Проблема в том, что мне надо чтобы класс по которому строка скрывается присваивалась конкретно строке а не body таблицы, так как скрываемых строк может быть много. Тут видать через индекс первая ячейка шапки открывает первую строку тела таблицы. А надо чтобы каждая ячейка шапки открывала группу строк с одним соответствующим классом. Таблица у меня будет не из 6 ти строк

рони 23.02.2017 19:30

JAMLIGHT,
у вас уже достаточно примеров, чтобы сделать то что вам нужно. далее раздел работа

JAMLIGHT 23.02.2017 19:56

спасибо за решения


Часовой пояс GMT +3, время: 15:44.