我们创建可在本地教室网络上运行的分布式 iPod Touch 应用程序。我们的一个应用程序有一个控制器,它允许满是学生的教室在教室前面的共享显示器上显示图标。
如果学生按住手指,控制器会使用 setInterval() 重复移动图标。如果图标碰到类显示上的对象,服务器会向应用程序发送一条消息以切换到另一个页面。在我们的 iPod 更新之前,所有这些都在 JQM 1.0.2 中运行。我们对PhoneGap、JQ JQM 进行了重大更新。IOS 6.1.3,我们切换到 JQM 1.3.1。我们过去成功地使用了 live() 事件函数。现在我们遇到了 on() 的问题。
我会尽力在这里展示代码:
这部分工作正常:
// Handles controller direction events to move icon on shared display
$(document).on('vmouseup vmousedown', ".controller", function(event){
var evType, direction;
evType = event.type;
event.preventDefault();
direction = $(this).attr("data");
if (repeater != 0){clearInterval(repeater)};
repeater = 0;
if(evType == 'vmousedown'){
move(direction);
repeater = setInterval(function(){move(direction)},200);
} else {
clearInterval(repeater);
repeater = 0;
}
});
这部分冻结了 IOS 设备上的捕获页面(具有控制器)(在 OSX 上的 Safari 浏览器中工作正常)。我们要更改Page("#operate"):
// Handles message from the server that an object was captured
function handleOperations(fields) {
var tag = fields.tag;
var message = fields.content.value;
switch (tag) {
case 'collective' :
expression = message;
$(".group-expression").html(expression);
break;
case 'capture' :
term = message;
$(".captured-expression").html(message);
$.mobile.changePage("#operate");
break;
case 'flags' :
updateOps(message);
break;
}
}
这些案例中的每一个都涉及中断正在发生的事情。我们过去使用 live() 来处理这种在我们的工作中经常发生的事情。服务器经常会打断客户端正在做的事情。我们如何恢复 live() 功能?
更新:
如果在 changePage() 之前插入一个 alert() ,它就可以工作。将不胜感激任何想法。现在很迷茫。我们不能让警报不断弹出。