类型错误$不是函数

时间:2012-08-28 20:16:32

标签: javascript jquery

我在我的网站上使用了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

4 个答案:

答案 0 :(得分:1)

尝试用jQuery()替换$(),看看是否继续出现此错误。指示它不是函数的错误意味着jQuery文件尚未加载或$ name被故意释放。

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

答案 1 :(得分:1)

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

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

您确定在您的实际网站上代码是在$(document).ready函数(或类似的东西)中,并且jQuery库是否正确加载?

答案 2 :(得分:0)

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

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

答案 3 :(得分:-1)

将代码包装在“就绪”功能中,如此

$(function(){  

 ...

});

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