无法使用jQuery检查井字棋是否为空
Not able to check if Tic-tac-toe a square is empty using jQuery
我正在编写一款井字游戏,但是我用来检查用户点击的是空方块还是已经填满的方块的代码不适合我。请找出我的错误。
function startgame(){
var $board=$('#board');
$('div.square').remove();
for(var i=0;i<9;i++)
$board.append($('<div/>').addClass('square').addClass('empty'));
$('div.square.empty').click(function(){
$this=$(this);
if($('div.square.empty').length==0){
displayendmsg();
}
else {
$this.removeClass('empty');
if(currentplayer=="X")
$this.append($('<div><img src="cross.jpg"> </div>').addClass('cross').css('visibility','visible'));
else
$this.append($('<div><img src="circle.jpg"> </div>').addClass('circle').css('visibility','visible'));
flipturn();
}
});
};
即使点击一个已经被占用的方块,我也会输入处理程序,我不知道为什么。
.click()
在调用时为所有匹配选择器的元素附加一个事件处理程序。即使元素之后不匹配选择器,事件处理程序仍然会在那里。
相反,使用.on()
来检查选择器是否仍然适用于触发事件处理程序的时刻:
$(document).on("click", "div.square.empty", function(){ alert("Clicked an empty square!"); });
你的问题是,你绑定的事件处理程序只匹配的选择器在你调用.click(..)
函数的时候的元素。但是,您希望将它绑定到所有元素上,但仅当元素具有正确的类时才触发该函数。
你可以通过使用委托来做到这一点。在最近的jQuery版本中,您可以使用.on()
方法:
$('div.square').on('click', '.empty', function() {
// your code here
});
相关文章:
- 主干-不管怎样,检查事件以前是否绑定过
- 如何让程序检查所选单词中是否有按键
- 用于检查数组中是否存在元素的javascript自定义方法
- 使用 jQuery 检查所有值是否为空或已填充
- 如何检查元素的内容是否为空,如果为空,请在jquery中删除该元素
- 使用map来检查是否为真'不起作用
- 遍历 JSON 对象并检查 URL 是否以某个值结尾
- 使用onkeyup JS事件检查输入的值是否唯一
- JS数组-检查对象值是否重复
- PhantomJS - 检查javascript函数是否正在运行的任何方法
- 如何使用jQuery可编辑插件检查ajax是否成功完成
- 当一些文本粘贴到文本框中时(没有设置超时),是否检查数字
- 如何检查是否检查了分区中的所有单选按钮
- 如何使用 for 循环来检查井字游戏中的获胜者
- 验证是否检查了1到3个复选框,但id不同
- JavaScript 的类型函数是否检查空值
- 如何知道angularjs中的控制器中是否检查了单选按钮
- 在垃圾收集期间是否检查持久收集
- 如何检查井字游戏赢家
- 无法使用jQuery检查井字棋是否为空