【问题标题】:How use JQuery closest() in Post and comment system如何在帖子和评论系统中使用 JQuery 最接近()
【发布时间】:2019-04-08 05:05:45
【问题描述】:

我有一个帖子和评论系统。类似于 facebook 的帖子和评论系统。帖子显示正确,但 cmets 仅显示第一个帖子,即显示在顶部的帖子。我能够对除第一篇文章之外的所有其他文章发表评论。 我需要您帮助的问题如下: - 每个帖子的 cmets 应相应显示。 - 能够为其他帖子提交 cmets。

这些是我所做的。 查看:

                <div class="box-footer" style="display: block;">
                    <form id="com" class="com" method="post">
                    <div class="img-push">
                        <input type="hidden"  class="status_id" id="status_id" name="status_id" value="<?php echo $post['spid']; ?>">

                        <textarea  name="comment" id="comment" class="form-control input-sm comment" placeholder="Press enter to post comment"></textarea>

                         <div class="box-footer box-form">
                          <btn class="btn btn-azure btn-sm pull-right commentbt" id="commentbt">Comment</btn>
                    <ul class="nav nav-pills">
                        <li><i class="fa fa-bullhorn"></i></li>

                    </ul>
                </div>
                    </div>
                  </form>
                    </div>
              <?php endforeach;?>

jquery:

$(document).ready(function(){
$(".commentbt").click(function(){
        var comment = $(this).closest("div.img-push").find("input[name='comment']").val();
        alert(comment);

    });
});

得到的只是“未定义” 我需要获取输入字段和文本区域的值。谢谢

【问题讨论】:

  • 如果我错了,请有人纠正我,但我认为您不需要在 'comment' 周围加上引号。
  • 我删除了报价但仍然没有用
  • 如果你把.commentbt改成#commentbt
  • #commentbt 仅适用于第一条评论

标签: php jquery


【解决方案1】:

最初,我可以注意到您的代码中的下一个错误:

1)您忘记了div 的关闭&lt;div class="box-footer" style="display:block;"&gt;

2)输入元素的属性namestatus_id,不是comment

3) 多个元素使用相同的ID 属性。

4) 在 JQuery 上,我将通过按类匹配来替换输入的搜索。另外,我也添加了 textarea 值的搜索。

所以,尝试下一个修改:

PHP

<?php foreach ($statuspost as $post): ?>
  <div class="box-footer" style="display:block;">
    <form class="com" method="post">
      <div class="img-push">

        <input type="hidden" class="status_id" name="status_id" value="<?php echo $post['spid'];?>">

        <textarea name="comment" class="form-control input-sm comment" placeholder="Press enter to post comment"></textarea>

        <div class="box-footer box-form">
          <btn class="btn btn-azure btn-sm pull-right commentbt">Comment</btn>
          <ul class="nav nav-pills">
            <li><i class="fa fa-bullhorn"></i></li>
          </ul>
        </div>

      </div>
    </form>
  </div>
<?php endforeach:?>

JQuery

$(document).ready(function()
{
    $(".commentbt").click(function()
    {
        var statusID = $(this).closest("div.img-push").find("input.status_id").val();
        alert(statusID);
        var comment = $(this).closest("div.img-push").find("textarea.comment").val();
        alert(comment);
    });
});

【讨论】:

  • 是的,谢谢它现在有效。并且还成功提交了cmets。另外,我需要为所有帖子显示评论。
  • 您现在能更好地解释一下您当前的问题吗?我还更新了删除所有tags 的所有ID 属性,因为对多个元素使用相同的ID 不是一个好习惯。
  • 我有一部分 Jquery 可以立即显示 cmets,但仅适用于第一个帖子,其他帖子的其他 cmets 没有显示。
  • 您应该打开一个新问题,显示有该问题的代码(或其相关部分)。在这个问题上,我只能看到 html 标记结构,以及 cmets 按钮的单击事件的侦听器。
  • @SholleyonlineJava,你不应该那样做,因为现在我的回答与你的第一个问题不匹配,而且所有的都会不一致,并且可能对我的回答产生反对票,你应该做一个新的题。不管怎样,我有时间会检查的。
猜你喜欢
  • 1970-01-01
  • 2022-11-13
  • 2011-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
相关资源
最近更新 更多