0

我一直在使用 jQuery 进行大量事件驱动编程,并且有人告诉我事件处理程序应该附加到最近的静态父容器。但是,当我尝试将事件侦听器附加到表时,它不起作用。我只有通过观看整个文档才能让它工作。这是我的工作:

$(document).on("click", "td", function() {
    //do something
})

但是,我想得到更像这样的东西:

$("#tableID").on("click", "td", function() {
    //do something
})

第二个版本虽然不行。我认为它不会检测到我桌子上的任何点击。为什么会这样?

4

2 回答 2

1

您需要在 DOM 准备好之后运行代码……或者至少在该元素准备好之后。

$(function() {
    $("#tableID").on("click", "td", function() {
        //do something
    });
});

当然,您需要确保 ID 正确且唯一。

于 2013-04-28T02:22:01.003 回答
0

因为选择器应该是一个字符串。在它周围加上引号,它应该可以工作。

$('#tableID').on('click', 'td', function() {
    //do something
});

如果表格是通过 AJAX 加载的,那么委托目标(将是 in 中的那个$())应该是在执行此绑定代码期间页面上存在的元素。通常的目标是document因为它总是在那里。但是它在 DOM 树上太远了,这就是为什么你可以选择你的目标。

于 2013-04-28T02:20:08.323 回答