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

フィドルがオンロード機能を自動的に追加するため、コードは実際には正常に機能していました: 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 に答える