JQuery.click()不使用模板

JQuery.click()不使用模板,jquery,asp.net-mvc,Jquery,Asp.net Mvc,这是我的ajax函数,它具有var模板变量 $.ajax({ type: "GET", url: "/Home/GetComment", dataType: "JSON", success: function (comments) { for (var i = 0; i < comments.length; i++) { var template = '<a id="like_button" class="like-

这是我的ajax函数,它具有var模板变量

$.ajax({
type: "GET",
url: "/Home/GetComment",
dataType: "JSON",
success: 
    function (comments) {
        for (var i = 0; i < comments.length; i++)
        {

            var template = '<a id="like_button" class="like-comment" href="#">Like <span class="glyphicon glyphicon-thumbs-up"></span></a>'
        }

    }
});


$("#like_button").click(function (evt) {
    $.ajax({
        type: "POST",
        url: "/Home/AddLikes",
        data: { "likeid": id },
        dataType: "JSON",
        success:
            function () {
                alert('alert');
            }
    });
});
$.ajax({
键入:“获取”,
url:“/Home/GetComment”,
数据类型:“JSON”,
成功:
职能(评论){
对于(var i=0;i
此单击功能不适用于此模板,但如果我使用相同的模板并将其放在索引视图中,则单击功能有效

这是索引视图中的代码,其id与模板中的id相同:

<a id="like_button" class="like-comment" href="#">Like <span class="glyphicon glyphicon-thumbs-up"></span></a>

我认为,目前您已经复制了
id
,您应该使用类来代替按钮:

var template = '<a class="like_button" class="like-comment" href="#">Like <span class="glyphicon glyphicon-thumbs-up"></span></a>'

当定义单击方法的jQuery函数执行时,按钮尚未创建! 您必须将click方法添加到已经存在的元素中(body始终存在)

因此,下面的函数如下所示: 单击正文时,找到like_按钮(如果有)并单击它(将事件委派给它):)。

$("body").on("click", "#like_button", function (evt) {
    $.ajax({
        type: "POST",
        url: "/Home/AddLikes",
        data: { "likeid": id },
        dataType: "JSON",
        success:
            function () {
                alert('alert');
            }
    });
});
试试这个

$("body").on("click", "#like_button", function (evt) {
    $.ajax({
        type: "POST",
        url: "/Home/AddLikes",
        data: { "likeid": id },
        dataType: "JSON",
        success:
            function () {
                alert('alert');
            }
    });
});
委派活动:

$(document).on('click', "#like_button", function (evt) {
并将您的var
id
更改为
class

var template = '<a class="like-comment like_button" href="#">Like <span class="glyphicon glyphicon-thumbs-up"></span></a>'
var模板=“”

由于锚点是动态生成的,因此文档中无法直接使用锚点将直接事件绑定到锚点,因此要解决此问题

您必须找到此元素最接近的静态父元素,它可以是一个分配了特定类的
div
,或
$(document),$(document.body)
,始终可用于委派事件。

 <div id="cntr"></div>

js代码:

$(document).ready(function(){
$.ajax({
   type: "GET",
   url: "/Home/GetComment",
   dataType: "JSON",
   success: function (comments) {
       var template = '';
       for (var i = 0; i < comments.length; i++) {

            template += '<a id="like_button" class="like-comment" href="#">Like     <span class="glyphicon glyphicon-thumbs-up"></span></a>'
        }

       $('#cntr').html(template);
       addEvent();
   }
  });

 function addEvent() {
    $("#like_button").on('click', function (evt) {
      $.ajax({
          type: "POST",
          url: "/Home/AddLikes",
          data: { "likeid": id },
          dataType: "JSON",
          success: function (d) {
              alert('Here');
          }
      });
   });
  }
});
$(文档).ready(函数(){
$.ajax({
键入:“获取”,
url:“/Home/GetComment”,
数据类型:“JSON”,
成功:功能(评论){
var模板=“”;
对于(var i=0;i
良好的旧事件委派。
$(document).ready(function(){
$.ajax({
   type: "GET",
   url: "/Home/GetComment",
   dataType: "JSON",
   success: function (comments) {
       var template = '';
       for (var i = 0; i < comments.length; i++) {

            template += '<a id="like_button" class="like-comment" href="#">Like     <span class="glyphicon glyphicon-thumbs-up"></span></a>'
        }

       $('#cntr').html(template);
       addEvent();
   }
  });

 function addEvent() {
    $("#like_button").on('click', function (evt) {
      $.ajax({
          type: "POST",
          url: "/Home/AddLikes",
          data: { "likeid": id },
          dataType: "JSON",
          success: function (d) {
              alert('Here');
          }
      });
   });
  }
});