Ajax WebGame,保持重新加载地图没有螺丝其他页面


Ajax WebGame, keep reloading map without screwing other pages

我正在制作一款网页游戏,它的界面非常简单,由以下内容组成:

<div>logo</div>
<div id="map"></div>
<div>some buttons here</div>

碰巧的是,带有id ="map"的div是我的地图出现的地方,但游戏的其他部分也很像库存。我使用jQuery做ajax的东西,所以它是这样的:

$(document).ready(function() {$('#map').load('map.php');});

上面的代码第一次加载div,然后当我点击方向按钮时,它会再次调用带有一些参数的函数,这样玩家就可以移动了,但问题是,我想让地图重新加载。
我试着做一个:

setInterval("$(document).ready(function() {$('#mapadiv').load('map.php');});",1000);

,事实上它确实工作,但当我点击一个按钮,改变div,而不是地图(像库存),它迅速显示库存屏幕,并再次更改为地图。
当然会改变,因为它一直在调用映射!所以我想,并试图把"setInterval"内Map.php,所以它只会调用,而它在屏幕上,但没有工作,它做了相同的第一次尝试。我想我漏掉了什么,有人能帮帮我吗?提前感谢

我假设你也有这些按钮:

   <input type="button" id="btnInventory" />
   <input type="button" id="btnRefreshMap" />

你的脚本应该是这样的:

function loadMap(){
  $('#map').load('map.php');
  $("#map").addClass("keepRefreshingMap");  //This will do the trick
}
function loadInventory(){
  $("#map").load("inventory.php"); //Put your loading inventory code here
  $("#map").removeClass("keepRefreshingMap");  //Remove the class so it doesn't refresh automatically
}
$(document).ready(function() {
   loadMap();
   $("#btnRefreshMap").click(function(){ loadMap(); });
   $("#btnInventory").click(function(){ loadInventory() });
   setInterval(function(){
      if($("#map").hasClass("keepRefreshingMap"))  //Only refresh if it has the class
          loadMap();
   }, 1000);
});

正如您所看到的,诀窍在于keepRefreshingMap类。只要mapdiv有它,它就会保持刷新。当你打开库存时,这个类被移除,所以地图不会刷新。