我正在编写一个tic tac toe游戏。在用户选择谁开始以及是否使用X或O之后,他可以将鼠标悬停在空格上,X或O会显示给用户他可以在那里移动。当用户点击电网时,他想要继续前进,X或O将停留在那里,并且此举将是永久的。目前我有这个工作,但以一种非常奇怪的方式。下面的代码:即使点击事件处理程序解除了所有处理程序的绑定时,Click事件也执行了单击和悬停事件处理程序
$('td').hover(moveHover);
$('td').mouseleave(function(){
$(this).html('');
});
$('td').click(move);
function move(){
$(this).unbind();
}
function moveHover(){
if (xO === 'X'){
$(this).append('<i class="fa fa-times fa-5x"></i>');
$('td i').css('color', '#ccc');
}
if (xO === 'O'){
$(this).append('<i class="fa fa-circle-o fa-5x"></i>');
$('td i').css('color', '#ccc');
}
}
Click事件处理程序只能从元素解除绑定任何点击事件处理程序。它实际上并不是将X或O图标附加为子元素。但是,当我点击一个空网格时,它确实会追加一个图标。这是link所有的代码,如果你想自己尝试。我想知道这怎么可能?
感谢说实话,我无意中发现了它。最初我的移动函数与moveHover函数相同,并且在它的末尾还有'$(this).unbind();'。但是当我测试它时,点击一个网格会产生2个X或O个。所以我试着在函数中加入'$(this).unbind();',这就是我现在看到的代码。 – avatarhzh