Jquery 如何撤消更改?
我正在为孩子们制作一个教育游戏,但我有一个大问题。 这是第一级:Jquery 如何撤消更改?,jquery,twitter-bootstrap,Jquery,Twitter Bootstrap,我正在为孩子们制作一个教育游戏,但我有一个大问题。 这是第一级: <div class="row" id="one"> <div class="col-md-12"> <div class="col-md-3"> <img src="img/ananas.png" class="img-responsive dimenzii"> <h3 class="drop1"
<div class="row" id="one">
<div class="col-md-12">
<div class="col-md-3">
<img src="img/ananas.png" class="img-responsive dimenzii">
<h3 class="drop1" id="drop1">______________</h3>
</div>
<div class="col-md-3">
<h1 class="green" id="dr2">Кокос</h1>
</div>
<div class="col-md-3">
<h1 class="green" id="dr1">Ананас</h1>
</div>
<div class="col-md-3">
<img src="img/coconut.png" class="img-responsive dimenzii">
<h3 class="drop2" id="drop2">______________</h3>
</div>
</div>
</div>
有人能告诉我如何保存初始条件以便以后使用吗?您可以在开始之前将初始状态保存为变量。如果级别不是太大,可以使用jQuery来复制它,但实际上不要将它放入DOM中。当你准备重置游戏时,你可以用它来销毁DOM上的游戏,并用保存的初始状态副本替换它
var initialState=$(levelId).clone();
//做一些可以修改关卡的事情
$(levelId).replaceWith(initialState);
谢谢您的回答,这对我帮助很大。这很有效,但只适用于视图。现在的设计与第一次播放关卡时的设计相同,但功能不同。我正在使用可拖动和可拖放的插件,现在,在这个克隆功能之后,当级别开始时,没有任何功能。页面是静态的。你知道是什么引起的吗?如果你所说的功能是指事件(如$(“#begin”)。单击(…)
),你可以不直接附加到DOM对象的方式来编写这些事件。您可以编写$(文档)。在(“click”、“#begin”、function(){…})
上,如果单击的元素与选择器匹配,则只要在页面上注册了单击事件,就会运行该事件(在本例中为#begin
).我已经试过了,它适用于按钮,但我需要它适用于可拖放功能,因为大多数事件都是可拖放事件。。我说的是Dropable插件$(“#drop”)的默认函数;如果我改变这个,那它就根本不起作用了。如果我不改变它,那么第一次玩关卡就可以了,下一次,什么都不会发生。啊。看起来clone
有两个选项可以使用事件进行克隆.clone(true)
将使用数据和事件进行克隆,.clone(true,true)
将使用数据和事件进行深度克隆。您可以切换到使用.clone(true,true)
作为初始状态。如果需要,您可以恢复到旧代码。单击(…)
而不是。打开(“单击”…)
,但是上的可能有一些优点,比如内存占用少一点(虽然对于这个项目来说可能可以忽略不计)。我现在一直在尝试,但没有任何变化。我已经用.clone(true)和.clone(true,true)尝试过了,但是什么都没有发生。
$("#begin,#Yes").click(function(){
$("#begin").hide();
game.play();
points = 0;
$("#stazi").show();
$("#final, #one,#two,#three,#four,#five,#six,#seven,#eight").hide();
$("#one").show();
$("#poeni").html(points);
$(".drop1,.drop2").html("_____________");
$("#dr1,#dr2").show();
setTimeout( function(){
game.pause();
$("#stazi").fadeOut(1000);
$("#finalPoints").html(points);
$("#final").delay(1000).fadeIn(2000);
win.play();
}
, 60000 );
});