4

我在我的网站上使用基于jQuery 的记忆游戏。它总体上运行良好,但我希望在最后显示“再次播放”链接和统计信息。我无法让该代码工作。我看到这个错误:

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();
    });

这是一个小提琴

4

4 回答 4

1

尝试将 $() 替换为 jQuery() 并查看是否继续出现此错误。指示它不是函数的错误意味着尚未加载 jQuery 文件或故意释放 $ 名称。

如果 jQuery() 函数不起作用,请确保在脚本块/文件之前加载 jQuery 文件。

于 2012-08-28T20:22:50.193 回答
1

由于小提琴自动添加了 onload 功能,您的代码实际上工作正常:http: //jsfiddle.net/ZXMUB/5/

我所做的只是取消注释分配游戏变量的第一行,并</script>从 js 窗口中删除结束标记。

您确定在您的实际站点上代码位于 $(document).ready 函数(或类似函数)中并且 jQuery 库被正确加载吗?

于 2012-08-28T20:26:28.433 回答
0

您的代码缺少文档就绪处理程序。更新:

http://jsfiddle.net/ZXMUB/1/

于 2012-08-28T20:18:44.317 回答
-1

将您的代码包装在“就绪”函数中,就像这样

$(function(){  

 ...

});

您的代码在加载 jquery 之前执行。

于 2012-08-28T20:18:38.953 回答