Как грамотно прописать существующий скрипт в тройном использовании?
Нашёл ,значит, подходящий скрипт для скрытия строк таблицы :
<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ти(или более) пар классов? |
Цитата:
А ты про это еще не рассказал. И пример для этого не сделал... :no: |
:-?
Цитата:
|
Тут получается у вас что скрываемые строками являются все те hide которые прописаны после кликнутого spoil(nextAll), тоесть первый открывает все, второй все кроме первого , третий все-кроме первого и второго и тд. А как скрывать spoil1-hide1,spoil2-hide2 и тд?
|
JAMLIGHT,
не осилил но скорее всего вам нужно форум поиск открывашка |
просто скрипт нужен подобный но немного другой.типа фильтр строк
|
JAMLIGHT,
делайте макет и описание ... фильтраций для таблиц тоже много на форуме |
я полагаю должен быть аналогичный простой скрипт только с переменной для классов spoil и hide соответственно. макет я дал вполне рабочий правда с раскопированным скриптом для каждой пары классов
|
Цитата:
Цитата:
|
JAMLIGHT,
когда надоест перебрать варианты сделайте макет Цитата:
|
закономерность в порядковом номере для общей переменной
|
<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>
Пропиши скрипт |
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>
|
тем что он скрывает ВСЕ строки с классом hide прописанные после кликнутой строки с классом spoil. А надо не все, а определённые. Тобишь надо чтобы spoil1 скрывал Hide1, spoil 2-Hide2 и тд Для этой цели я прописал 5 скриптов,но это не дело сами понимаете
|
JAMLIGHT,
смотрите макет выше. |
К примеру мне надо разворачивающиеся строки в таблице с городами со средним заработком. Например Средний заработок 10 000 рублей-Разворачивается(скрываетс ) 5 городов. Средний заработок 15 000 Руб-7 городов. А если у меня этих средних заработков в таблице 50 штук я что 50 аналогичных скриптов буду в код писать? . Если так копипастить скрипт то он займёт больше разметки
\Спасибо щас потестю |
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>
|
То что надо. Ценю
|
а чем эти 2 варианта отличаются?
|
JAMLIGHT,
:blink: тем что для второго варианта пост№17 неважно где будут находится открываемые строки |
вижу. второй вариант более гибкий . Грамотно. спасибо. вставлю код себе на сайт. Можете подписать автора
|
Потестил я эти варианты- не подходят потому что мне надо чтобы скрывающим элементом по клику была не строка а ячейка
|
<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,
<!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>
|
Проблема в том, что мне надо чтобы класс по которому строка скрывается присваивалась конкретно строке а не body таблицы, так как скрываемых строк может быть много. Тут видать через индекс первая ячейка шапки открывает первую строку тела таблицы. А надо чтобы каждая ячейка шапки открывала группу строк с одним соответствующим классом. Таблица у меня будет не из 6 ти строк
|
JAMLIGHT,
у вас уже достаточно примеров, чтобы сделать то что вам нужно. далее раздел работа |
спасибо за решения
|
| Часовой пояс GMT +3, время: 14:55. |