Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Сворачивание строк таблицы (https://javascript.ru/forum/jquery/47182-svorachivanie-strok-tablicy.html)

eFusion 13.05.2014 00:04

Сворачивание строк таблицы
 
Нужно свернуть строки таблицы, находящиеся ниже текущей по выбору <option> в <select>. Делаю так:

$(function () {
$tr = $('select').parents('tr');
$('select').change(function (){
$('tr').not($(this).prev()).not(this).slideUp() ;
});
$(':submit').click(function (event){
event.stopPropagation();
//event.preventDefault();
$('tr').slideDown() ;
})
});

сворачивает абсолютно все. Что делаю не так?

eFusion 13.05.2014 00:36

На всякий случай html такой:

<form>
<table>
<tr>
<td>$row[0]</td>
<td>$row[1]</td>
<td>$row[2]</td>
<td>$row[3]</td>
<td>$row[4]</td>
</tr>
<tr>
<td><p>Текст</p></td>
<td><select class='span1' id='1' name='conn'>
          <option selected='selected'></option>
          <option>Текст</option>
          <option>Текст</option>
          <option>Текст</option> 
        </select></td>
<td><p>Текст</p></td>
        <td><select class='span1' id='2' name='tv'>
           <option selected='selected'></option>
           <option>Текст</option><option>Текст</option>
           <option>Текст</option></td>
<td><p>Текст</p></td>
        <td><select class='span1' id='3' name='inet'>
            <option selected='selected'></option>
            <option>Текст</option>
            <option>Текст</option>
            <option>Текст</option>
           </select>
           </td>
<td><button type='submit' id='continue' name='submit'>Готово</button>
</td>
</tr>
</form>

рони 13.05.2014 01:23

Цитата:

Сообщение от eFusion
На всякий случай html такой:

теги когда добавите ?
Цитата:

Сообщение от eFusion
Нужно свернуть строки таблицы, находящиеся ниже текущей

какая строка текущая ? и где строки ниже ?
:(

<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
   $(function ()
{
 $tr = $('tr');
 $('select').change(function (){
 var indx = $tr.index($(this).parents('tr'));
 $('tr').slice(indx+1).slideUp() ;

 });
 $(':submit').click(function (event){
 event.stopPropagation();
 //event.preventDefault();
 $('tr').slideDown() ;
 })
})
  </script>
</head>

<body>
<form>
<table>
<tr>
<td>$row[0]</td>
<td>$row[1]</td>
<td>$row[2]</td>
<td>$row[3]</td>
<td>$row[4]</td>
</tr>
<tr>
<td><p>Текст</p></td>
<td><select class='span1' id='1' name='conn'>
          <option selected='selected'></option>
          <option>Текст</option>
          <option>Текст</option>
          <option>Текст</option>
        </select></td>
<td><p>Текст</p></td>
        <td><select class='span1' id='2' name='tv'>
           <option selected='selected'></option>
           <option>Текст</option><option>Текст</option>
           <option>Текст</option></select></td>
<td><p>Текст</p></td>
        <td><select class='span1' id='3' name='inet'>
            <option selected='selected'></option>
            <option>Текст</option>
            <option>Текст</option>
            <option>Текст</option>
           </select>
           </td>
<td><button type='submit' id='continue' name='submit'>Готово</button>
</td>
</tr><tr>
<td>$row[0]</td>
<td>$row[1]</td>
<td>$row[2]</td>
<td>$row[3]</td>
<td>$row[4]</td>
</tr></table>
</form>

</body>

</html>

eFusion 13.05.2014 14:00

Текущая строка та, в которой происходит change объекта <select> т.е. <option> поменялся - свернулось все что ниже этого куска:
<tr>
<td>$row[0]</td>
<td>$row[1]</td>
<td>$row[2]</td>
<td>$row[3]</td>
<td>$row[4]</td>
</tr>
<tr>
<td><p>Текст</p></td>
<td><select class='span1' id='1' name='conn'>
          <option selected='selected'></option>
          <option>Текст</option>
          <option>Текст</option>
          <option>Текст</option>
        </select></td>
<td><p>Текст</p></td>
        <td><select class='span1' id='2' name='tv'>
           <option selected='selected'></option>
           <option>Текст</option><option>Текст</option>
           <option>Текст</option></select></td>
<td><p>Текст</p></td>
        <td><select class='span1' id='3' name='inet'>
            <option selected='selected'></option>
            <option>Текст</option>
           <option>Текст</option>
            <option>Текст</option>
           </select>
      </td>

<td><button type='submit' id='continue' name='submit'>Готово</button>
</td>
</tr>


и если есть что-то выше этого куска (например еще один такой же блок) его тоже свернуть.

eFusion 13.05.2014 14:03

Не могу понять - браузер в консоли мне возвращает:
Uncaught SyntaxError: Unexpected token =


хотя все знаки равно стоят где нужно.
Убираю код JS из скрипта(общего) ошибка пропадает

рони 13.05.2014 14:14

eFusion,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
   $(function ()
{
 $tr = $('tr');
 $('select').change(function (){
 var indx = $tr.index($(this).parents('tr'));
 $('tr').slideUp().slice(indx-1,indx+1).slideDown() ;

 });
 $(':submit').click(function (event){
 event.stopPropagation();
 //event.preventDefault();
 $('tr').slideDown() ;
 })
})
  </script>
</head>

<body>
<form>
<table>
<tr>
<td>$row[0]</td>
<td>$row[1]</td>
<td>$row[2]</td>
<td>$row[3]</td>
<td>$row[4]</td>
</tr>
<tr>
<td><p>Текст</p></td>
<td><select class='span1' id='1' name='conn'>
          <option selected='selected'></option>
          <option>Текст</option>
          <option>Текст</option>
          <option>Текст</option>
        </select></td>
<td><p>Текст</p></td>
        <td><select class='span1' id='2' name='tv'>
           <option selected='selected'></option>
           <option>Текст</option><option>Текст</option>
           <option>Текст</option></select></td>
<td><p>Текст</p></td>
        <td><select class='span1' id='3' name='inet'>
            <option selected='selected'></option>
            <option>Текст</option>
           <option>Текст</option>
            <option>Текст</option>
           </select>
      </td>

<td><button type='submit' id='continue' name='submit'>Готово</button>
</td>
</tr>
<tr>
<td>$row[0]</td>
<td>$row[1]</td>
<td>$row[2]</td>
<td>$row[3]</td>
<td>$row[4]</td>
</tr>
<tr>
<td><p>Текст</p></td>
<td><select class='span1' id='1' name='conn'>
          <option selected='selected'></option>
          <option>Текст</option>
          <option>Текст</option>
          <option>Текст</option>
        </select></td>
<td><p>Текст</p></td>
        <td><select class='span1' id='2' name='tv'>
           <option selected='selected'></option>
           <option>Текст</option><option>Текст</option>
           <option>Текст</option></select></td>
<td><p>Текст</p></td>
        <td><select class='span1' id='3' name='inet'>
            <option selected='selected'></option>
            <option>Текст</option>
           <option>Текст</option>
            <option>Текст</option>
           </select>
      </td>

<td><button type='submit' id='continue' name='submit'>Готово</button>
</td>
</tr>
</table>
</form>

</body>

</html><!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
   $(function ()
{
 $tr = $('tr');
 $('select').change(function (){
 var indx = $tr.index($(this).parents('tr'));
 $('tr').slideUp().slice(indx-1,indx+1).slideDown() ;

 });
 $(':submit').click(function (event){
 event.stopPropagation();
 //event.preventDefault();
 $('tr').slideDown() ;
 })
})
  </script>
</head>

<body>
<form>
<table>
<tr>
<td>$row[0]</td>
<td>$row[1]</td>
<td>$row[2]</td>
<td>$row[3]</td>
<td>$row[4]</td>
</tr>
<tr>
<td><p>Текст</p></td>
<td><select class='span1' id='1' name='conn'>
          <option selected='selected'></option>
          <option>Текст</option>
          <option>Текст</option>
          <option>Текст</option>
        </select></td>
<td><p>Текст</p></td>
        <td><select class='span1' id='2' name='tv'>
           <option selected='selected'></option>
           <option>Текст</option><option>Текст</option>
           <option>Текст</option></select></td>
<td><p>Текст</p></td>
        <td><select class='span1' id='3' name='inet'>
            <option selected='selected'></option>
            <option>Текст</option>
           <option>Текст</option>
            <option>Текст</option>
           </select>
      </td>

<td><button type='submit' id='continue' name='submit'>Готово</button>
</td>
</tr>
<tr>
<td>$row[0]</td>
<td>$row[1]</td>
<td>$row[2]</td>
<td>$row[3]</td>
<td>$row[4]</td>
</tr>
<tr>
<td><p>Текст</p></td>
<td><select class='span1' id='1' name='conn'>
          <option selected='selected'></option>
          <option>Текст</option>
          <option>Текст</option>
          <option>Текст</option>
        </select></td>
<td><p>Текст</p></td>
        <td><select class='span1' id='2' name='tv'>
           <option selected='selected'></option>
           <option>Текст</option><option>Текст</option>
           <option>Текст</option></select></td>
<td><p>Текст</p></td>
        <td><select class='span1' id='3' name='inet'>
            <option selected='selected'></option>
            <option>Текст</option>
           <option>Текст</option>
            <option>Текст</option>
           </select>
      </td>

<td><button type='submit' id='continue' name='submit'>Готово</button>
</td>
</tr>
</table>
</form>

</body>

</html>

eFusion 13.05.2014 15:08

В очередной раз - огромное спасибо!!!:)


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