Удаление столбцов таблицы. Вопросы.
Здравствуйте.
Нашел в интернете пример удаления столбцов в таблице (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> |
spo,
Ссылки в первой строке таблицы каждый раз перезаписываются после удаления столбца, если ненавесить снова клик, ничего несработает, live обеспечивает привязку клика к новым элементам. сейчас live это on. |
Цитата:
|
Благодарю, рони, Deff.
|
| Часовой пояс GMT +3, время: 00:45. |