Javascript jQuery click()无法处理替换的html
我正在尝试使用jquery、php和mysql数据库创建一个游戏。 我有一个ajax函数,如果需要的话,它可以每秒更新a板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);
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
});