我正在用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
}
答案 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));
})
使用它来绑定动态事件处理程序