За последние 24 часа нас посетили 49715 программистов и 1728 роботов. Сейчас ищут 634 программиста ...

Подкомментарии к комментам

Тема в разделе "JavaScript и AJAX", создана пользователем lemonl, 5 май 2012.

  1. lemonl

    lemonl Активный пользователь

    С нами с:
    10 июн 2009
    Сообщения:
    164
    Симпатии:
    0
    Питаюсь добавлять подкомментарии к комментам. Столкнулся с проблемой подкомментарии выводятся у всех комментариев которые есть на странице.


    Это код добавления подкомментов
    Код (Text):
    1.  
    2. $(function() {
    3. $(".addccomm").click(function() {
    4.  
    5.     var comment = $(this).parent().parent().find("#commsg").val();
    6.     var datast = 'comment=' + comment;
    7.    
    8.      if(comment=='') {
    9.         // alert('Please Give Valide Details');
    10.      }
    11.        else {
    12.  
    13.     $("#flash").show();
    14.     $("#flash").fadeIn(400).html('<img src="ajax-loader.gif" align="absmiddle">&nbsp;<span class="loading">Loading Comment...</span>');
    15. $.ajax({
    16.   type: "POST",
    17.   url: "commentajax.php",
    18.   data: datast,
    19.   cache: false,
    20.   success: function(html){
    21.  
    22.   $("div#update").append(html);
    23.   $("div#update div:last").fadeIn("slow");
    24.     document.getElementById('commsg').value='';
    25.         $("#flash").hide();
    26.       $('div').parents(this).parents(this).parents(this).parents(this).parents(this).parents(this).parents(this).parents(this).parents(this).find('#flash').hide();
    27.   }
    28.  });
    29. }
    30. return false;
    31.     });
    32. });

    Нужно словить как-то через this что нужно добавить подкомментарии именно к этому блоку (комменту)

    <div id="update" class="timeline"></div> // сюда выводятся подкомменти,

    Вот некоторый пример, как оно выглядит
    Код (Text):
    1.  
    2. <div style="border: 2px solid green;">
    3.  
    4.     <div id="update" class="timeline"></div>
    5.     <div id="flash" align="left"></div>
    6.  
    7. <form action="#" method="post">
    8.     <textarea name="comment" id="comment"></textarea><br />
    9.     <input type="submit" class="submit" value=" Submit Comment " />
    10. </form>
    11. </div>
    12.  
    13.  
    14. <div style="border: 2px solid green;">
    15.  
    16.     <div id="update" class="timeline"></div>
    17.     <div id="flash" align="left"></div>
    18.  
    19. <form action="#" method="post">
    20.     <textarea name="comment" id="comment"></textarea><br />
    21.     <input type="submit" class="submit" value=" Submit Comment " />
    22. </form>
    23. </div>
    24.  
    25.  
    26. <div style="border: 2px solid green;">
    27.  
    28.     <div id="update" class="timeline"></div>
    29.     <div id="flash" align="left"></div>
    30.  
    31. <form action="#" method="post">
    32.     <textarea name="comment" id="comment"></textarea><br />
    33.     <input type="submit" class="submit" value=" Submit Comment " />
    34. </form>
    35. </div>

    Как в блоке
    Код (Text):
    1. success: function(html){
    через $('this').parents() найти обьект
    в этом блоке не работает $('this')
     
  2. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    Код (Text):
    1. $('div').parents(this).parents(this).parents(this).parents(this).parents(this).parents(this).parents(this).parents(this).parents(this).find('#flash').hide();
    вы смотрите , а то на govnokod.ru попадёте
    parents может летать по дому хоть до верха одним вызовом

    Код (Text):
    1. document.getElementById('commsg').value='';
    у вас jquery

    в вашем коде особо не разбирался , но суть такова:
    0. вы знаете id комментария который хотите откомментировать
    1. ставим класс каждому комменту class="comm_$comm_id" (для стилизации классы можно указывать через пробел "mystyle comm_$comm_id")
    2. как я понял - у каждого коммента есть своя форма отправки - ставим ей атрибут tocomm="$comm_id"
    3. дальше на js - $('.comm_'+$(this).attr('tocomm')).after(commtext);