Javascript jQuery click()无法处理替换的html

Javascript jQuery click()无法处理替换的html,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在尝试使用jquery、php和mysql数据库创建一个游戏。 我有一个ajax函数,如果需要的话,它可以每秒更新a板 var turnCount = -1; setInterval(function(){ $.get('includes/boardControl.php',{turn: turnCount }, function(data){ if(data != "") { $("#board").html(data);

我正在尝试使用jquery、php和mysql数据库创建一个游戏。 我有一个ajax函数,如果需要的话,它可以每秒更新a板

var turnCount = -1;
setInterval(function(){
    $.get('includes/boardControl.php',{turn: turnCount }, function(data){
        if(data != "")
        {   $("#board").html(data);
            turnCount = $("#turnCount").text();
            $("#turnCount").text("")
        }
    });

}, 1000);
这工作得很好,它检查数据库以查看turn是否已增加,如果已增加,则替换电路板。现在我要做的是创建一个click函数,它使用Ajax更新board和数据库中的turn count。我希望以某种方式使用第N个选择器来确定我正在单击的方块

我有几个问题

1)我现在的点击功能是

$(document).ready(function() {
    $("td > img").click(function(){
        alert("clicked");
    });
});
到目前为止,它在我写进html的一个额外的测试表上工作,但不在用前面的函数创建的表上工作。我做错了什么

2)到目前为止,我看过的教程规定我应该用以下方式编写代码

$(document).ready(function() {
  //code here
});
昨晚我问了一个问题,有人告诉我,我的功能过于复杂化了。那么什么时候应该使用document.ready函数,什么时候不应该?将所有脚本放在一个document.ready函数中可以吗?还是应该有多个

3) 一旦我得到点击图像工作,我希望发送一个X,Y坐标到服务器,并改变板上相应的点。如何确定单击表中的哪个单元格以了解要使用的坐标?(或者有更简单的方法吗?

只有在页面首次加载时才会触发
$(document).ready()
函数-为了使这项工作更容易,请尝试以下操作:

function bindClicks() {
    $("td > img").click(function(){
        alert("clicked");
    });
}

$(document).ready(bindClicks);

如果需要绑定新表的单击事件,这将允许您稍后调用
bindClicks()

听起来您需要更改

$("td > img").click(function(){
                alert("clicked");
        });

编辑:对于jQuery 1.9及更高版本,您可以执行以下操作:

$("#board").on('click', 'td > img', function(){
  // handle click
});
1)加载ajax内容后是否重新连接单击事件

$(document).ready
函数将在页面完全加载后立即启动,但在ajax调用后不会启动。因此,您需要在每次ajax调用后重新连接click事件:

2)亲吻。让它尽可能简单。如果document.ready语句中有50多行,则可能需要创建一些函数


3)实现这一点的最佳方法可能是为每个单元格分配一个特定的ID,并在单击事件中捕获该ID。然后,您可以将其传递给服务器,并在返回时更新特定单元格。

您确定JQuery与您的查询匹配:

$(“td>img”)

我会用firebug加载firefox,并检查您是否首先获得匹配。您创建的第二个表的结构可能与您预期的略有不同,firebug也可以向您显示确切的结构


Goodluck.

“live”是解决StackOverflow上一大类jquery问题的解决方案。一旦你看到“我改变了我的html,x不再工作”这样的语句,很可能live()会帮助你。哈哈,所以你可能仅仅从标题就知道了这个问题。结构很好,这是一个很好的建议,但我还是在不久前确定了firebug在这方面的用途。
$("#board").on('click', 'td > img', function(){
  // handle click
});