管理多个评论框'设置'在单页上 - 区分它们并正确对待

时间:2016-04-06 17:35:42

标签: javascript jquery html comments this

我在同一页面上有多个内容的评论框,我很难识别它们是否正确对待它们 - 例如,我尝试发表评论的地方并不重要(从中评论框) - 它总是被发布到页面上的第一个评论框,或者我在输出后与输入进行斗争,以便在我发表评论后进行清除,但输入仅在同一个评论框中清除。在这里我有: (AJAX)

    $(function() {
     $(".comm").click(function() {
    var parentDiv = $(this).parent('.post_comment').next().children(":first");  
    var comment = $(this).parent('.post_comment').find('.comment').val();
     var name = document.getElementById("username").value;
     var idv = $(this).parent('.post_comment').find("#idv").val();
    var posthere =            $(this).parent().siblings('.wrap_comment').find('#wrap').attr('class');

   alert(idv);
  if(comment=='')
  {
    alert("Enter some text..");
     $("#content").focus();
      }
   else
        {
      $.ajax({
  type: "POST",
  url: "river_flow.php",
  data: 
  {  username: $("#username").val(),
     idv: $(this).parent('.post_comment').find(".idv").val(),
     comment: $(this).parent('.post_comment').find('.comment').val()},

    cache: false, 
   success: function(data){    
    $('#show').after(data);
    $(this).find('.comment').css('background-color','red');

   $("#content").focus();
    }})   
    return false;
        }})})

(HTML)

<div class='com'><button class='click_and_comment'>Give it a comment</button>

              <div class='post_comment'>
              <img class='end' src="img/end.png" alt='close'/>
                   <input type="hidden" id="username" value="<?php echo $_SESSION['username'] ?>" name='username'/>
                   <input type="hidden"class='idv' id="idv" value="<?php echo $row['idv']; ?>" name='idv'/>
                   <textarea type='text' class="input_comment comment"   placeholder='What do you think?' name='comment' id='comment' ></textarea>
                   <input type='submit' name='comment_submit' class="comment_submit comm" id='comm'/>

              </div>


                 <div class='wrap_comment' id="<?php echo $row['idv']; ?>" >


                 <div id="show" align="left" class="<?php echo $row['idv']; ?>" ></div>
                    <?php
                    $idvc = $row['idv'];

                    $query = " SELECT * FROM comments WHERE idvc= '$idvc' ORDER BY datec DESC;";

                    $result = mysqli_query($conn,$query);

                    while ($bow = mysqli_fetch_assoc($result)) {
       echo "<div class='each_comment' id='<?php echo $bow[idvc];?>' >".$bow['commentc']."</div> ";}

                    ?>
                 </div>

所以,要在一个问题中形成我的问题:我如何将用户评论分别发布到他们需要的地方&#39;要发布,如何仅清理当前&#39;或者&#39;这个&#39;输入 - 并不总是第一。再一次 - 一切都运作得很完美,问题是总有一个以上的评论框,我需要区分它们并按照它们对待它们。以下是我的猜测不起作用(关于矛盾,我不会在这里),请放心,为什么他们不工作,甚至简单:

$(this).find('#comment').value = '';

不起作用!也许它没有看到&#39;这个属性。但为什么?!所以。这是我的猜测:

 $(this).parent('.post_comment').siblings('.wrap_comment').find('#show').after(data);

(这是评论帖,这是我对输入结算的猜测:)

$(this).parent('.post_comment').find('#comment').val('');

我找到了类似的东西:

$(&#39;#评论&#39)。removeAttr(&#39;值&#39);

不起作用 - 我没有谈到当这些东西不起作用时我得到的纯粹的混乱:

$(this).find('.comment').css('background-color','red');

缂。所以,我希望有人可以为我清除这一切。我新手诚实。感谢名单!

1 个答案:

答案 0 :(得分:0)

使用以下脚本并使用此代码替换相关脚本。我没有在你的div中找到多个评论框,其中class =&#34; com&#34;所以我认为它只出现在这个div中而不是其他地方:

$(function() {
        $(".com").click(function() {

            //##############################$(this) here refers to div with class="com" as this is the element on which click event has happened#####################
            var myThis = $(this);
            //var parentDiv = $(this).parent('.post_comment').next().children(":first");  

            //since div with class="post_comment" is inside div with class="com" so it is child to that div and not parent
            var parentDiv = $(this).find('.post_comment').next().children(":first"); 

            //var comment = $(this).parent('.post_comment').find('.comment').val();
            var comment = $(this).find('.post_comment .comment').val();//find element with class="comment" whose parent is div with class="post_comment"

            var name = document.getElementById("username").value;

            //var idv = $(this).parent('.post_comment').find("#idv").val();
            var idv = $(this).find(".post_comment #idv").val();//find element with id="idv" whose parent is div with class="post_comment"

            //####Not sure what is the use of below statement
            var posthere = $(this).find('.wrap_comment #wrap').prop('class');

            alert(idv);
            if (comment == '')
            {
                alert("Enter some text..");
                $("#content").focus();
            }
            else
            {
                $.ajax({
                    type: "POST",
                    url: "river_flow.php",
                    data: {username: $("#username").val(),
                                idv: idv,
                                comment: comment 
                    },
                    cache: false,
                    success: function (data) {
                        $('#show').after(data);
                        //### $(this) here will not point to your div with class="com" as it is in different context inside your ajax success function
                        //##$(this).find('.comment').css('background-color', 'red');
                        myThis.find('.comment').css('background-color', 'red');

                        $("#content").focus();
                    }
                });
                return false;
            }
        });
    });