2

我有一个从 github 获得的 jQuery 游戏(简单的卡片记忆游戏)。

它没有“新游戏”按钮,所以一旦游戏结束,不刷新页面就无法重新开始游戏。

我不想刷新整个页面,所以我尝试创建这样的点击事件。

<li style="color:black; font-weight:600"><a href="#">new game</a></li>

$(document).ready(function() {
    $('a').click(function() {
            $("body").load("game.js");
            });

});          

单击时,外部 .js 不会被替换。

我用谷歌搜索但没有找到任何东西。

也许这是不可能的?我已经读过,一旦加载了 .js,就无法使用 .click 删除该 .js。

真的吗?

如果加载的.js无法替换,如何构建“新游戏”功能?

感谢您为我回答这个简单但令人费解(令像我这样的新手感到困惑)的问题。

4

4 回答 4

1

会有不好的副作用,变量仍设置为旧值等。重新加载脚本与刷新页面不同。

例如,如果您有一个currentScore从 0 开始的变量,然后在您玩游戏时升高,重新加载脚本不一定会将其重置为 0,它可能仍然是 51245 或任何最后一个分数,基本上把一切都搞砸了。这也适用于无数其他事情。原来的间隔现在将加倍。事件将再次添加,旧的不会取消,重复调用所有内容。名单还在继续。

基本上这个游戏的架构似乎很差,需要工作才能正确重置。当某事物的逻辑和架构存在根本缺陷时,通常不像快速修复使其工作那么简单。重新启动游戏等功能通常必须从输入的第一行代码开始作为编码的一部分进行计划。

于 2012-10-18T23:53:07.420 回答
0

You can remove js file using this jQuery.

$j('script[src=game.js]').remove();

I try this in page load only.

于 2014-06-02T06:24:30.973 回答
0

即使您再次获取并运行脚本,我猜您也可能会因全局变量或 DOM 中遗留的垃圾而产生一些奇怪的挥之不去的副作用。最好让脚本自行清理,game.js 中是否有某种重置函数可以调用?


如果没有重置,那么再次运行 javascript 文件可能会成功:

var script = document.createElement( 'script' );
script.type = 'text/javascript';
script.src = 'game.js';
$(document.head).append( script );

如果游戏表现良好并且仅在其画布内操作事物,您可能需要尝试从 dom 中移除画布并在导入脚本之前重新创建它$('#gameWrapper').remove(); $(document.body).append('<div id="gameWrapper"></div>'):这将有助于清除一些残留的事件处理程序和 DOM 垃圾。

于 2012-10-18T23:36:02.120 回答
0

看看jQuery.getScript()- jQuery.getScript() url

于 2012-10-18T23:29:22.837 回答