$(function (){
/* Объект sendDataComment будет содержать данные для отправки на сервер
commentForm - переменная, в которую будет помещен клон формы */
var sendDataComment = {};
var commentForm;
var commentnew = {};
var commentid = {};
// Функция создает форму для ответа путем клонирования нашей спрятанной формы
function CommentForm()
{
if(commentForm)
{
// Проверяем существования клона. Если он уже создан, то удаляем его, а затем создаем новый.
$('.companel').css('display', 'block');
removeCommentForm();
}
commentForm = $('#newComment').clone();
}
// Функция удаления клона
function removeCommentForm()
{
commentForm.fadeOut(500);
sendDataComment = {};
}
/* На событие клика по кнопке "Добавить комментарий/Ответить" вешаем необходимые действия */
$('#addNewComment, .responce').click(function(){
var clickId = this.id;
commentid.id = clickId;
CommentForm(); // Создаем клона формы
if($(this).attr('id') == 'addNewComment')
{
// Новый комментарий
// Добавляем форму после всех комментариев
commentForm.appendTo('#commentRoot').slideDown(500);
}
else
{
// Новый ответ
// Добавляем форму под родительским комментарием
// Для этого находим родительский элемент li
var parentComment = $(this).parent().parent();
$('#newComment').slideUp(5000);
// в sendDataComment добавим идентификатор родителя
sendDataComment.parent_id = clickId;
commentnew.parent_id = clickId;
var childs = parentComment.find('ul'); // Ищем у этого коммента потомков (ответы)
if(!childs.length)
{
// Если у этого комментария нет ответов (потомков) добавим для ответов контейнер ul, а затем уже в этот контейнер нашу форму
parentComment.append('<ul></ul>');
commentForm.appendTo(parentComment.children('ul'));
}
else
commentForm.prependTo(childs); // Добавляем форму в контейнер для ответов
}
$('#companel' + clickId).fadeOut(500);//скрытие панели коммента
commentForm.slideDown(500); // Показываем форму
return false; // предотвращаем дефолтное действие браузера
});
$('#cancelComment').live('click', function(){
$('.companel').fadeIn(500);
// Здесь live обязательно, т.к. мы работаем не с самой формой, а ее клоном
removeCommentForm();
})
/* По клику на кнопку "Сохранить", доформировываем объект данных и отправляем их на сервер */
$('button#save').live('click',function(){
sendDataComment.author = commentForm.find("input[name='name']").val();
sendDataComment.comment = commentForm.find("textarea").val();
commentnew.comment = sendDataComment.comment;
sendData(); // Отправка данных
});
// Функция отправки данных комментария на сервер
function sendData()
{
commentForm.find('button').hide().next().show(); // Прячем кнопку и показываем лоадер
$.post(
"/includes/add_feed.php",
sendDataComment,
function(data){ // Обработчик ответа от сервера
commentnew.id = data;
formToComment();
//console.log(commentnew);
}
)
}
// Функция преобразование формы в комментарий
function formToComment()
{
console.log(commentnew);
$.post(
"/includes/return_feedbody.php",
commentnew,
function(data){ // Обработчик ответа от сервера
//console.log(data);
//$('#commentroot').html(data);
$('ul#commentsRoot' + commentid.id).fadeIn(500).append(data);
removeCommentForm();
commentForm.removeAttr('id');
sendDataComment = {};
console.log(sendDataComment);
commentForm = null;
}
)
// Обязательно commentForm присваиваем значение null, таким образом, мы разорвем связь между полученным в итоге комментом и объектом в js
}
});
собственно вот и сам код))) Можете что либо сказать про больного? Возможно реанимировать?