Javascript.RU

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

не работает повторно скрипт
Доброго времени суток, уважаемые форумчане) При работе с Jquery появилась проблема на последнем этапе создание древовидной системы комментариев. Вобщем комментарий добавляется прекрасно, но вот при попытке добавления второго комментария без перезагрузки при добавлении первого скрипт как будто отключается. Подскажите пожалуйста, в чём может быть проблема? Заранее спасибо)
Ответить с цитированием
  #2 (permalink)  
Старый 11.05.2012, 00:02
Аспирант
Отправить личное сообщение для atlantis Посмотреть профиль Найти все сообщения от atlantis
 
Регистрация: 18.03.2012
Сообщений: 95

Тут экстрасенсов нет.
Код в студию.
Ответить с цитированием
  #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.
Ответить с цитированием
  #4 (permalink)  
Старый 15.06.2012, 16:00
Новичок на форуме
Отправить личное сообщение для brussens Посмотреть профиль Найти все сообщения от brussens
 
Регистрация: 10.05.2012
Сообщений: 8

Может кто нибудь помоч?
Ответить с цитированием
  #5 (permalink)  
Старый 15.06.2012, 16:08
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

честно говоря, очень долго читать, первое, что встретилось:

// Функция удаления клона
      function removeCommentForm()
      {
         commentForm.fadeOut(500);
         sendDataComment = {};
      }

фейдаут не удаляет элемент, а только прячет. может быть в этом дело. попробуйте
commentForm.fadeOut(500, function() { $(this).remove(); });
Ответить с цитированием
  #6 (permalink)  
Старый 15.06.2012, 16:54
Новичок на форуме
Отправить личное сообщение для brussens Посмотреть профиль Найти все сообщения от brussens
 
Регистрация: 10.05.2012
Сообщений: 8

Сообщение от tadjik1 Посмотреть сообщение
честно говоря, очень долго читать, первое, что встретилось:

// Функция удаления клона
      function removeCommentForm()
      {
         commentForm.fadeOut(500);
         sendDataComment = {};
      }

фейдаут не удаляет элемент, а только прячет. может быть в этом дело. попробуйте
commentForm.fadeOut(500, function() { $(this).remove(); });
Спасибо, попробовал, ничего к сожалению не получилось((( Только вот заметил одну вещь: после появления комментария почему то не работает повторное добавление на только что добавленном, на добавленных ранее до последнее перезагрузки страницы появляется поле и всё работает, теперь совершенно я потерялся(((
Ответить с цитированием
  #7 (permalink)  
Старый 15.06.2012, 20:21
Новичок на форуме
Отправить личное сообщение для brussens Посмотреть профиль Найти все сообщения от brussens
 
Регистрация: 10.05.2012
Сообщений: 8

Ув. форумчане, помогите плиз разобраться с этим скриптом, ибо уже месяц не могу с ним поладить... Понятно, что скрипт отказывается работать второй раз...
Ответить с цитированием
  #8 (permalink)  
Старый 15.06.2012, 21:27
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

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

А как можно связаться? Через 5 минут будет тестовик
Ответить с цитированием
  #10 (permalink)  
Старый 15.06.2012, 22:16
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

brussens,
Выложите тут или в личку
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не работает скрипт как ссылка Abraham jQuery 31 14.06.2011 03:04
Не работает скрипт :( VladimirV Javascript под браузер 5 21.12.2010 14:26
Сверкающая ссылка. Скрипт не работает в фаерфоксе Wukong Firefox/Mozilla 3 09.09.2010 15:09
скрипт работает только в IE, а в остальных браузерах нет. melodicman Firefox/Mozilla 0 23.06.2010 15:18
скрипт не работает в IE( SunYang Общие вопросы Javascript 3 02.02.2010 22:45