2012-01-25 44 views
0

我通过jQuery动态创建了表的行,我还在每一行上添加了一个删除按钮,并在该按钮上添加了一个事件,通过该事件删除与该按钮对应的行(在一行中)当我们点击那个按钮时,但是我的疤痕只有上面三个按钮被激活并且被触发,并且最后的按钮不能工作。动态创建的按钮无法正常工作

$(function(){ 
    $('<input></input>') 
     .attr({'type': 'button'}) 
     .val("Remove") 
     .appendTo('table#AllSelectedTest tbody tr:first td:last') 
    ; 
}); 

$(document).ready(function() { 
    $("table#AllSelectedTest tbody tr input").live({ 
     click: function(){ 
      $(this).closest('tr').remove(); 
     } 
    }) 
}); 

我使用上面的代码生成一个按钮并将其与事件绑定。 我的问题是一些按钮的作品,有些则不是

+1

此外,这将是有益的,如果你可以给你的旧代码。 – scessor

+0

我编辑我的问题,并添加我的代码 – Vishwajeet

回答

2

它总是好的,给一个ID元素。请尝试更改代码如下

$(document).ready(function(){ 
    $('<input>').attr({type: 'button', id:"remove_button", value:'Remove'}) 
        .appendTo('table#AllSelectedTest tbody tr:first td:last'); 

    $("#remove_button").live("click", function(){ 
         $(this).closest('tr').remove(); 
     }); 
}); 

小提琴例如:http://jsfiddle.net/vSUYj/1/

此外,如果你正在使用1.7以上的jQuery,请使用on代替live

更新:以上不工作

$(document).ready(function(){ 
     var elem = $('table#AllSelectedTest tbody tr:first td:last'); 
     elem.append('<input type="button" id="remove_button" value="Remove"/>'); 

    $("#remove_button").live("click", function(){ 
     $(this).closest('tr').remove(); 
    }); 
}); 

小提琴例子试试这个为好,万一:http://jsfiddle.net/vSUYj/

+0

我也使用这个功能,但现在只有前四个按钮被激活,并且在第四个位置以下的按钮不起作用 – Vishwajeet

+0

在更新的部分包含另一个答案..请尝试。 –

+0

在html代码中看起来像 – Vishwajeet

1

没有看到你的代码,这是不可能肯定地说,但你使用.live().delegate()分配这些按钮的处理程序?

编辑:还应当指出的是,这些方法在jQuery的最新版本过时,而新方法是.on()

+0

我试过你的解决方案但现在只有前四个按钮是活动的,并且在第4位以下的按钮不工作, 这是我的奇怪的事情,我不知道什么发生在这里 – Vishwajeet