在加载文档后,事件处理程序无法监视注入HTML的元素

时间:2013-04-26 10:03:53

标签: javascript jquery event-handling

我正在用Javascript编写应用程序。没有太多的细节,我有一个游戏板(实际上只是一个HTML表)。用户通过单击s与主板交互,因此我在$(document).ready()中有一个click事件监听器。事件处理程序通过更改几个变量/对象/ etc的状态然后调用layoutBoard来更新板,后者读取所有这些对象的状态并填充。

我遇到的问题是我的事件处理程序没有监视新的s,这意味着不再检测到点击事件。如何将事件处理程序指向新的s或者继续检测板上的点击?这是我的代码:

$(document).ready(function(){
    layoutBoard();
    $("td").click(
        function() {
            movePiece($(this));
        }
    );
});

function movePiece(clickedCell){
    //do stuff
    layoutBoard();
}

function layoutBoard(){
    $("#board").empty();
    //recreate board and new <td>s
}

2 个答案:

答案 0 :(得分:2)

用于事件委托

$(document).on("click","td",function(){
     movePiece($(this));
});

如果委托给最近的静态父容器...

喜欢

$('#tableID').on("click","td",function(){
     movePiece($(this));
});

答案 1 :(得分:1)

$("body").on("click", "td", function() {
    movePiece($(this));
})

使用它来绑定动态事件处理程序