Показать сообщение отдельно
  #1 (permalink)  
Старый 05.01.2009, 11:26
Новичок на форуме
Отправить личное сообщение для Deexus Посмотреть профиль Найти все сообщения от Deexus
 
Регистрация: 05.01.2009
Сообщений: 3

Проблема со списком jquery
Помогите пожалуйста. Суть проблемы в следующем.
Есть список, выполненный в виде строк таблицы <tr>. Внутри находится несколько колонок. В одной из колонок ссылка для удаления родительского <tr> (.delete). В другой выводится номер строки, совпадающий с id родительского <tr> (.number). На странице также есть ссылка для добавления строк, т.е. элементов списка (.add). Так вот, допустим мы добавляем n элементов списка. У каждого элемента <tr> свой id, по возрастанию. При удалении одного из элементов, должен производиться пересчет, т.е. если у нас есть 3 элемента и мы удаляем второй, то 2 удаляется, а 3 меняет свой id на 2. Я реализовал это след. образом. При нажатии на удалить, id засовываю в переменную. После етого произвожу удаление всего, что было после <tr> то есть все next tr'ы, и воссоздаю их снова с помощью цикла. Работает, но некорректно. В FF и Oper'e все работает нормально, но если попытаться удалить элемент с id=2, два раза, т.е. до удаления и после, то ничего не происходит. Если после этого добавить элемент, то все нормально, но опять же нельзя удалить два раза. В IE при нажатии на удалить, удаляет, если элемент только один. Если несколько, то удаляет только при нажатии на "удалить" последнего элемента, а потом первого.
Код прилагается ниже. Помогите разобраться с данным методом или если есть метод проще, подскажите пожалуйста
Заранее спасибо.

$(document).ready(function(){
		$(".add").click(function() {
			a=a+1;
			arr[a]=a;
			p=a;
			var oldHtml = $('#approachs-list tr:last').html();
			if (a%2 == 0) {
	var newHtml = '<tr id=' + arr[a] + ' class="blue">' + oldHtml +'</tr>';
			}
			if (a%2 != 0) {
	var newHtml = '<tr id=' + arr[a] + ' class="pink">' + oldHtml +'</tr>';
			}
		$('#approachs-list').append(newHtml);
		$('#approachs-list tr:last .number').text(arr[a]);
		$('.delete').click(function() {
			tr = $(this).parents('tr');
			thisid = $(tr).attr('id');
			$(tr).nextAll()
				.remove();
			tr.remove();
			j = arr[thisid];
			for (i=j;i<p;i++) {
		        var oldHtml2 = $('#approachs-list tr:first').html();
			if (i%2 == 0) {
		var newHtml2 = '<tr id=' + i + ' class="blue">' + oldHtml2 +'</tr>';
			}
			if (i%2 != 0) {
		var newHtml2 = '<tr id=' + i + ' class="pink">' + oldHtml2 +'</tr>';
			}
			$('#approachs-list').append(newHtml2);
			$('#approachs-list tr:last .number').text(i);
			}
			p=p-1;
			a=a-1;
		});
	});
});
Ответить с цитированием