我在我的网站上使用了jQuery Based Memory Game。它总体上运作良好,但我希望在最后显示“再次播放”链接和统计数据。我无法让代码工作。我看到了这个错误:
TypeError: $ is not a function
[Break On This Error]
var game = $('div.slashc-memory-game'); // get the game
这是JS:
// this script shows how you can get info about the game
var game = $('div.slashc-memory-game'); // get the game
var info = $('p#info').find('span'); // get the info box
var playAgain = $('a#play-again').css('visibility', 'hidden'); // get the play again link
// format time like hh:mm:ss
var formatTime = function(s)
{
var h = parseInt(s / 3600), m = parseInt((s - h * 3600) / 60); s = s % 60;
return (h < 10 ? '0' + h : h) + ':' + (m < 10 ? '0' + m : m) + ':' + (s < 10 ? '0' + s : s);
}
// listen for game 'done' event
game.bind('done', function(e)
{
// show basic stats
var stats = game.slashcMemoryGame('getStats');
info.html('Success ! Number of clicks : ' + stats.numClicks + ', elapsed time : ' + formatTime(parseInt(stats.time / 1000)) + '.');
playAgain.css('visibility', 'visible'); // show link
});
// play again action
playAgain.click(function(e)
{
playAgain.css('visibility', 'hidden'); // hide link
info.html('Memory Game, click to reveal images'); // reset text
game.slashcMemoryGame('restart'); // restart game
e.preventDefault();
});
这是Fiddle
答案 0 :(得分:1)
尝试用jQuery()替换$(),看看是否继续出现此错误。指示它不是函数的错误意味着jQuery文件尚未加载或$ name被故意释放。
如果jQuery()函数不起作用,请确保在脚本块/文件之前加载jQuery文件。
答案 1 :(得分:1)
随着小提琴自动添加onload功能,你的代码实际上工作正常:http://jsfiddle.net/ZXMUB/5/
我所做的只是取消注释游戏变量分配的第一行,并从js窗口中删除关闭</script>
标记。
您确定在您的实际网站上代码是在$(document).ready函数(或类似的东西)中,并且jQuery库是否正确加载?
答案 2 :(得分:0)
您的代码缺少文档就绪处理程序。更新:
答案 3 :(得分:-1)
将代码包装在“就绪”功能中,如此
$(function(){
...
});
您的代码在加载jquery之前正在执行。