2012-08-28 165 views
4

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

+1

'语法错误:缺少}函数体'后 –

+0

设置一个不模仿实际问题的小提琴没有多大意义。 – Pointy

+1

您的网站适合我。然而,小提琴充满了复制和粘贴错误 – Eric

回答

1

尝试使用jQuery代替$()(),看看如果你继续这个错误信息。指示它不是函数的错误意味着jQuery文件尚未加载,或者$ name被有意释放。

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

+0

就是这样,现在起作用。谢谢! – L84

+0

@Lynda:与您遇到的特定错误消息一起,这意味着某处某处正在分配给'$',这是一个问题。寻找'$ = ...'并修复它。 – josh3736

-1

“就绪” 功能,包装你的代码,像这样

$(function(){ 

... 

}); 

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

+4

这没有任何意义。如果'$'不是一个函数,如何在'$'help的另一个无效调用中包装无效调用? – josh3736

+0

但是我会指出,游戏实际上并没有发射任何“完成”事件。 –

+0

据我所知,jquery专门为'$(function())'和'$(document).ready(function()..)'事物寻找,并将它们绑定到dom加载的事件。说实话,我实际上并不知道它是如何实现这一点的。 –

1

如小提琴全自动添加的onload功能,你的代码实际上是工作的罚款:http://jsfiddle.net/ZXMUB/5/

我所做的就是取消对第一线在游戏变量beeing分配,并从JS窗口关闭</script>标签。

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

相关问题