如何在使用jQuery单击按钮后禁用它?

如何在使用jQuery单击按钮后禁用它?,jquery,html,razor,Jquery,Html,Razor,如何在单击每个按钮后禁用它,以及如何通过jQuery增加like计数器 我正在为每条评论构建一个“like”按钮,并使用jQuery将数据发布到PostsController。我为循环中的每个项目传递Id值@item.Id,并通过下面的jQuery代码处理Id @foreach (var item in Model.PostComments) { <a id="@item.Id" href="#" class="btn-sm btn-success btn-like">&l

如何在单击每个按钮后禁用它,以及如何通过jQuery增加like计数器

我正在为每条评论构建一个“like”按钮,并使用jQuery将数据发布到PostsController。我为循环中的每个项目传递Id值@item.Id,并通过下面的jQuery代码处理Id

@foreach (var item in Model.PostComments)
{ 
    <a id="@item.Id" href="#" class="btn-sm btn-success btn-like"><span class="glyphicon glyphicon-thumbs-up"></span></a>
                    <span id="commentcounter">@Model.CommentMetrics.Where(a => a.PostCommentId == item.Id).Sum(a => a.VoteValue)</span>
}
@foreach(Model.PostComments中的变量项)
{ 
@Model.CommentMetrics.Where(a=>a.PostCommentId==item.Id).Sum(a=>a.VoteValue)
}
jQuery代码是:

<script>
  $(document).ready(function() {
    $('a.btn-like').click(function(e) {
      e.preventDefault();
      $(this).attr("disabled", "disabled");
      $('#commentcounter').text(function(i, oldVal) {
        return parseInt(oldVal, 10) - 1;
      })
      $.ajax({
        url: '@Url.Action("CommentUp", "Posts")',
        data: {
          id: this.id
        }
      });
    });
  });
</script>

$(文档).ready(函数(){
$('a.btn-like')。单击(函数(e){
e、 预防默认值();
$(此).attr(“已禁用”、“已禁用”);
$('#commentcounter').text(函数(i,oldVal){
返回parseInt(oldVal,10)-1;
})
$.ajax({
url:'@url.Action(“CommentUp”,“Posts”),
数据:{
id:这个是
}
});
});
});
使用
$(this).prop(“disabled”,true)
禁用单击处理程序中的按钮

如何增加注释计数器

首先,如果commentcounter在循环中,它将获得相同的id,这将产生错误。您可以做一件事,用commentcounter id附加
@item.id
,使其唯一,使其看起来像commentcounter 12,CommentCounter 23如果多个CommentCounter的
@item.Id=12或23
等,现在将此代码写入增量

$('commentcounter'+e.target.id).text(parseInt($('commentcounter'+e.target.id).text())+1)

Jquery文档

属性与属性:

属性和属性之间的差异在特定情况下可能很重要 情况。在jQuery1.6之前,.attr()方法有时采用属性值 在检索某些属性时考虑,这可能会导致不一致 行为。从jQuery1.6开始,.prop()方法提供了一种显式 检索属性值,而.attr()检索属性

正式文件:

对于您的示例,您需要:

 $(this).prop('disabled', true);

我使用了你的建议,效果很好,但如何为每个项目增加commentcounter?正好$(“#commentcounter”).text(odVal+1),请告诉我从哪里获得旧值?commentcounter在循环中,其id在每次迭代中都会更改。如何执行此操作?不要使用
attr
表示“已禁用”,请使用
prop
。请看我这样写的

@Model.CommentMetrics.Where(a=>a.PostCommentId==item.Id).Sum(a=>a.VoteValue)

而且它也不起作用,Jquery next comments删除
href=
可能重复的我读过的这篇文章,我想使隐藏和切换回显示。