Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Смена id у элементов (https://javascript.ru/forum/jquery/40537-smena-id-u-ehlementov.html)

obscurant 09.08.2013 15:01

Смена id у элементов
 
Здравствуйте.
Есть такой кусочек jquery и таблица
<script>
$(document).ready(function() {
$('.delete').click(function() {
    var commentContainer = $(this);
    commentContainer.slideUp(
		'high', 
		function() 
		{
			$(this).remove();
		}
	);
});
</script>
<table id="prod_table" border="0">
<tr id="0" class="delete">
  <td><input name="articul_0"></td>
  <td><input name="name_0"></td>
  <td><input name="brand_0"></td>
  <td><input name="price_0"></td>
  <td><input name="count_0"></td>
  <td><span>Удалить</span></td>
</tr>

<tr id="1" class="delete">
  <td><input name="articul_1"></td>
  <td><input name="name_1"></td>
  <td><input name="brand_1"></td>
  <td><input name="price_1"></td>
  <td><input name="count_1"></td>
  <td><span>Удалить</span></td>
</tr>

<tr id="2" class="delete">
  <td><input name="articul_2"></td>
  <td><input name="name_2"></td>
  <td><input name="brand_2"></td>
  <td><input name="price_2"></td>
  <td><input name="count_2"></td>
  <td><span>Удалить</span></td>
</tr>

</table>


сейчас работает удаление строки из таблицы, если я кликаю по этой строке.
И у меня вопросы:
1. Как удалять строку, щелкнув не в любом месте строки, а только по span Удалить.
2. Как пересчитать окончание имен инпутов после очередного удаления строки. Т.е. если удалим строку вторую (с id = 1), то имена и id третьей (и последующих строк) пересчитались. Избавится от пробелов в очередности.

ОлегА 09.08.2013 15:28

зачем вам вообще эти id?
а скрипт так
$(document).ready(function() {
$('.delete span').click(function() {
    var commentContainer = $(this);
    commentContainer.slideUp(
        'high',
        function()
        {
            $(this).closest('tr').remove();
        }
    );
});

obscurant 09.08.2013 15:34

аха... спасибо. ну id действительно не нужны наверное. я думал может к ним привязываться нужно будет.
а по второму вопросу не подскажете?

ОлегА 09.08.2013 15:43

Цитата:

Сообщение от obscurant
а по второму вопросу не подскажете?

а имена зачем ва такие? делайте массив пишите так
<table id="prod_table" border="0">
<tr id="0" class="delete">
  <td><input name="articul[]"></td>
  <td><input name="name[]"></td>
  <td><input name="brand[]"></td>
  <td><input name="price[]"></td>
  <td><input name="count[]"></td>
  <td><span>Удалить</span></td>
</tr>
 
<tr id="1" class="delete">
  <td><input name="articul[]"></td>
  <td><input name="name[]"></td>
  <td><input name="brand[]"></td>
  <td><input name="price[]"></td>
  <td><input name="count[]"></td>
  <td><span>Удалить</span></td>
</tr>
 
<tr id="2" class="delete">
  <td><input name="articul[]"></td>
  <td><input name="name[]"></td>
  <td><input name="brand[]"></td>
  <td><input name="price[]"></td>
  <td><input name="count[]"></td>
  <td><span>Удалить</span></td>
</tr>
 
</table>

obscurant 09.08.2013 15:54

я слабенько в jquery и javascript разбираюсь. не могли бы разжевать?
и как это сделать после удаления строки? $('#prod_table tr').each(function()
именно чтобы последовательность сохранялась. чтобы при сабмите знать какие поля можно дергать

ОлегА 09.08.2013 16:10

в смысле причем здесь javascript и jquery? при отправки этих полей формой на сервер у вас выстроится массив, остальное обрабатывайте на сервере, вам же эти поля для отправки данных на сервер нужны?

$articul = $_POST['articul'];

// вот ваша последовательность
$articul[0]; // 1-ый input name=articul
$articul[1]; // 2-ой input name=articul
$articul[2]; // 3-ий input name=articul
...
// ну и т.д.

obscurant 09.08.2013 16:25

да, спасибо!


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