Показать сообщение отдельно
  #3 (permalink)  
Старый 13.05.2012, 01:55
Новичок на форуме
Отправить личное сообщение для brussens Посмотреть профиль Найти все сообщения от brussens
 
Регистрация: 10.05.2012
Сообщений: 8

$(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 
 }
     
    
  });

собственно вот и сам код))) Можете что либо сказать про больного? Возможно реанимировать?

Последний раз редактировалось brussens, 13.05.2012 в 02:16.
Ответить с цитированием