我用laravel做了一个博客部分,博客包含评论和回复,评论工作很好。但当我想回复它只是让我回复最新的评论,我想我在我的jquery函数中犯了一个错误。
这是评论和回复的形式:
@foreach ($comments as $i)
<li>
<div class="avatar"><img src="/assets/media/avatars/blank.png" alt="" /></div>
<div class="comment-content">
<div class="arrow-comment"></div>
<div class="comment-by">{{ $i->name }}
<span class="date">{{ date('F j, Y', strtotime($i->created_at)) }}</span>
@if (Auth::user())
<a href="#" data-id="{{ $i->id }}" id="replay"
class="reply"><i class="fa fa-reply"></i> Répondre</a>
@endif
</div>
<p>{{ $i->comment }}</p>
</div>
<ul>
@foreach ($replay as $o)
@if ($o->cmnt_id == $i->id)
<li>
<div class="avatar"><img src="/assets/media/avatars/admin.png"
alt="" /></div>
<div class="comment-content">
<div class="arrow-comment"></div>
<div class="comment-by">Admin
<span
class="date">{{ date('F j, Y', strtotime($o->created_at)) }}</span>
</div>
<p>{{ $o->comments }}</p>
</div>
</li>
@endif
@endforeach
</ul>
</li>
@endforeach
</ul>
</section>
这是我jquery代码:
@push('script')
<script>
$("#replay").on('click', function(e) {
e.preventDefault();
var cmnt_id = $(this).attr("data-id");
var blog_id = $('#blog_id').val();
$('#add-comment').html(`
<form class="add-comment" action="/reply" method="POST">
@csrf
<input type="hidden" name="cmnt_id" value="` + cmnt_id + `">
<input type="hidden" name="blog_id" value="` + blog_id + `">
<fieldset>
<div class="row">
<div class="col-md-12">
<textarea cols="30" placeholder="Commentaire..." rows="2" name="comment" required></textarea>
</div>
</div>
</fieldset>
<div class="utf-centered-button">
<button type="submit" class="button">Submit Comment</button>
</div>
<div class="clearfix"></div>
</form>
`);
});
</script>
@端推
我做错了什么?
谢谢你
1条答案
按热度按时间vs91vp4v1#
你好吗?
问题在于,您为每个链接设置了相同的
id
属性,当您这样做时,在click事件中,jQuery将获得DOM中具有该id的第一个元素。如果您将选择器用作类,jQuery将获得实际单击的元素。请尝试在单击功能中切换选择器,以执行以下操作: