Показать сообщение отдельно
  #1 (permalink)  
Старый 11.03.2013, 21:53
Аватар для spo
spo spo вне форума
Профессор
Отправить личное сообщение для spo Посмотреть профиль Найти все сообщения от spo
 
Регистрация: 11.05.2011
Сообщений: 213

Удаление столбцов таблицы. Вопросы.
Здравствуйте.
Нашел в интернете пример удаления столбцов в таблице (http://www.bloj.ru/wordpress/del_colums.html и http://stackoverflow.com/questions/1...l-table-column), попытался разобраться, но возник ряд вопросов на которые не могу найти ответ самостоятельно.

Оригинал:

$("a.delete").live("click", function(){
	var myIndex = $(this).closest("td").prevAll("td").length;
	$(this).parents("table").find("tr").each(function(){
		$(this).find("td:eq("+myIndex+")").animate({width: "0"}, 1000, function(){
			$(this).remove();
			fixTitles();
		});
	});
});

function fixTitles() {
	$("tr:eq(0) td").each(function(a){
		$(this).html("<a href='#' class='delete'>Delete Row</a> COL " + (a+1));
	});
}


Вот рабочий код который я немного изменил добавив одно условие:
(function($) {

	$("a.delete").live("click", function() {
		var myIndex1 = $(this).closest("td").prevAll("td").length;
		var myIndex2 = $(this).closest("tr").find("td").length;
		if(myIndex2 > 1) {
			$(this).parents("table").find("tr").each(function() {
				$(this).find("td:eq("+myIndex1+")").animate({opacity: 0, width: 0}, 'slow', function(){
					$(this).remove();
					$("tr:eq(0) td").each(function(a) {
						$(this).html("<a href='#' class='delete'>Delete col</a> "+(a+1));
					});
				});
			});
		} else {
			$(this).parents("table").animate({opacity: 0, width: 0}, 'slow', function(){
				$(this).remove();
			});
		}
		return false;
	});
	
})(jQuery);


1. Зачем в оригинальном примере следующий код был вынесен в отдельную функцию:

$("tr:eq(0) td").each(function(a) {
						$(this).html("<a href='#' class='delete'>Delete col</a> "+(a+1));
					});


2. Почему если вынести данный код за пределы animate, то он срабатывать не будет?

3. Для чего используется live и почему если заменить его на click то событие не срабатывает?

HTML:
<table>
		<tr>
			<td><a href="#" class="delete">Delete col</a> 1</td>
			<td><a href="#" class="delete">Delete col</a> 2</td>
			<td><a href="#" class="delete">Delete col</a> 3</td>
			<td><a href="#" class="delete">Delete col</a> 4</td>
			<td><a href="#" class="delete">Delete col</a> 5</td>
			<td><a href="#" class="delete">Delete col</a> 6</td>
		</tr>
		<tr>
			<td>row 1</td>
			<td>row 1</td>
			<td>row 1</td>
			<td>row 1</td>
			<td>row 1</td>
			<td>row 1</td>
		</tr>
		<tr>
			<td>row 2</td>
			<td>row 2</td>
			<td>row 2</td>
			<td>row 2</td>
			<td>row 2</td>
			<td>row 2</td>
		</tr>
	</table>
Ответить с цитированием