【问题标题】:How to target specific button in JQuery for foreach loop elements如何在 JQuery 中为 foreach 循环元素定位特定按钮
【发布时间】:2017-10-26 19:04:59
【问题描述】:

当我在 foreach 循环中为帖子单击此“评论”按钮时

<button type="button" class="commentBtn">
<i class="em em-thought_balloon"></i>
</button>

我正在尝试打开此表单

{!! Form::open(['method'=>'POST', 'style'=>'display: none;', 'class'=>'commentform']) !!}
{!! Form::textarea('Comment', null, ['size'=>'50x2']) !!}
{!! Form::button('Comment', ['type'=>'submit', 'class'=>'btn btn-primary']) !!}
{!! Form::button('Cancel', ['class'=>'btn btn-default cancelcomment']) !!}
{!! Form::close() !!}

我正在使用 Laravel,按钮位于刀片模板中的 foreach 循环中。表单本身也在 foreach 循环中。当我单击该按钮时,我的 jQuery 函数正在工作,但它正在为我的 foreach 循环中的每个帖子打开表单,而不仅仅是目标帖子。这是函数:

$(document).ready(function(){
   $(".commentform").hide();
       $(".commentBtn").click(function(e) {
          $(".commentform").show();
    });
});

如何修复此功能,以便只有帖子的目标按钮才能打开表单?而不是在 foreach 循环中显示的每个帖子中都打开表单。

【问题讨论】:

    标签: php jquery laravel foreach


    【解决方案1】:

    假设.commentform 是.commentBtn 的兄弟:

    $(document).ready(function(){
       $(".commentform").hide();
           $(".commentBtn").click(function(e) {
              $(this).siblings(".commentform").show();
        });
    });
    

    【讨论】:

      【解决方案2】:

      点击按钮后可以直接得到评论表单

      $(document).ready(function(){
         $(".commentform").hide();
         $(".commentBtn").click(function(e) {
            $(this).next(".commentform").show();
         });
      });
      

      【讨论】:

      • 现在当我点击带有该代码的按钮时,什么也没有打开
      • 哎呀!!如果每个.commentform 都在其.commentBtn 之后,那么您可以使用next 而不是closest
      • 我也试过了,由于某种原因它不起作用。会不会是形式的原因?表单和按钮都在同一个父元素中。并且按钮确实出现在表单之前
      • 带有next的评论表单必须直接在评论按钮之后
      • 啊,就是这样!谢谢!
      猜你喜欢
      • 1970-01-01
      • 2019-12-05
      • 1970-01-01
      • 2019-12-04
      • 2021-03-21
      • 1970-01-01
      • 2019-10-27
      • 2022-01-05
      • 1970-01-01
      相关资源
      最近更新 更多