1

这无疑很简单,但是我对 jquery 的了解不足,这对我来说很复杂。基本上我有这个代码:

$(document).ready( 
    function() {
    $( "#remove")
    .click(function() {
        alert("I have been clicked!");
        $(this).parent().parent().remove();
    }); 
});

我在表格中添加了一个按钮来删除它的行(见上面的代码)。按钮如下:

<td ><button id='remove' type='button'>Remove</button></td>

但是,单击时它什么也不做。我认为这可能与加载文档后创建按钮的事实有关......不过,不知道该怎么做。

4

1 回答 1

5
$( "td").on('click', '#remove', function() {
        alert("I have been clicked!");
        $(this).parent().parent().remove();
    }); 

当您尝试动态添加按钮时,您需要委托事件处理程序(又名实时事件)。

jQuery > 1.7中的委托事件声明为

$(container).on(eventName, target, handlerFunction);

有关更多详细信息,请参阅.on()

您还有另一个选项.delegate(),它的声明过程是:

$(container).delegate(target, eventName, handlerFunction);

因此,对于您的情况,它将如下所示:

$('td').delegate('#remove', 'click', function() {
      alert("I have been clicked!");
      $(this).parent().parent().remove();
});

笔记

这里指的是页面加载时属于 DOMcontainer的按钮的持有者。#remove从您的帖子看来td,您可能还有其他东西(任何有效的jQuery 选择器

如果您无法检测到您container,请#remove使用$(document)or$('body')代替$('td').

于 2012-06-06T07:00:27.297 回答