代码之家  ›  专栏  ›  技术社区  ›  user361697

jQuery:动态表行不处理事件

  •  1
  • user361697  · 技术社区  · 15 年前

    我正在编写产品的HTML表格。有很多列包含许多jQuery事件(更改、单击等),附加到每个列中的表单元素(按钮、文本、选择)。它们工作得非常好。

    最后一列包含“add”链接,该链接对URL进行AJAX回调,在表中动态添加新行。

    $('table td .addrow').live('click', function() {
      var cur_obj = this;
      $.ajax({
       url: 'product/addrow',
       success: function(data) {
        $(cur_obj).parent().parent().after(data);
       }
      });
     });
    

    该行正在动态添加,但jQuery事件都不起作用,即使它们与预加载的行配合良好。

    3 回复  |  直到 15 年前
        1
  •  1
  •   chchrist    15 年前

    你应该使用 live() 或者 delegate() jQUery函数

        2
  •  1
  •   Steve Claridge    15 年前

    你不应该把你的头发分开吗。添加链接的live()用法?听起来像是希望click()、change()等事件在所有行上都能起到相同的作用,所以添加。live()事件,比如:

    $('table td').live('click', function() {
      //do stuff
    });
    

    所以。live()调用确保将新行添加到EventHandler。如果在添加的每一新行上都有一个addrow元素,那么原始代码看起来就正常了。

        3
  •  0
  •   Yoosuf Mo    13 年前

    $('table').delegate('td', 'click', function() { //do stuff });