1
  $("#btnAdd").click(function () {
    $.ajax({
      type: "POST",
      url: "View.aspx/AddResponsibility",
      data: '{"ClientCode":"' + $("#hfClientCode").val() + '","ResponsibilityCode":"' + $("#txtResponsibility").val() + '"}',
      async: true,
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      success: function (msg) {
        $('#tblRespon > tbody:last').append("<tr><td>" + $("#txtResponsibility").val() + "</td><td>" + $("#txtFullName").val() + "</td><td><a class='delete' id='btnDelete' name='btnDelete' value='" + $("#txtResponsibility").val() + "'>" + "Delete" + "</a></td></tr>");
      },
      error: function (msg) {
        alert(msg.d);
      }
    });
  });

我需要将一个类添加到我要添加的新元素“<a>”中。我在上面尝试的方式似乎没有作为函数工作

$(".delete").click(function () {

不会像通常对页面上已包含的元素那样触发。

4

3 回答 3

2

这是因为您稍后将注入到 DOM 的锚标记。这意味着无论您在哪里绑定了点击功能,它都不会对新注入的元素产生任何影响。

解决方案是. on将适用于当前和未来的元素。

改变这个

$(".delete").click(function () {
   //some code here
})

$(document).on("click",".delete",function () {
  //some code here
})

on1.7+版本开始可用。如果您使用的是早期版本,请考虑使用live()

于 2012-07-26T16:20:52.917 回答
1

您需要像这样使用.on()函数:

$("#tblRespon").on("click",".delete",function(){
于 2012-07-26T16:20:44.100 回答
0

如果我是正确的,您需要将删除处理程序重新分配给添加的元素:

success: function (msg) {
        $('#tblRespon > tbody:last').append("<tr><td>" + $("#txtResponsibility").val() + "</td><td>" + $("#txtFullName").val() + "</td><td><a class='delete' id='btnDelete' name='btnDelete' value='" + $("#txtResponsibility").val() + "'>" + "Delete" + "</a></td></tr>");

        $('.delete').click(function(){
           //your code
        })

},

我知道有更好的方法,但只需要知道每次添加元素时都应该为这些添加的元素注册处理程序

于 2012-07-26T16:23:44.907 回答