【发布时间】:2012-11-19 19:13:28
【问题描述】:
我有一个非常简单的 PhoneGap 项目,其中包含一些可以根据需要打开和关闭的消息传递元素。我在这个项目中使用 jQuery,尽管无论我是否使用 jQuery 显示/隐藏 div,都会出现我看到的问题。
无论如何,相关标记如下:
<div class="event listening blink" id="waiting" >
Waiting for Game
</div>
<div class="event listening blink" id="error" >
Something bad happened...
</div>
<div id="running">
<h1>Shake Me!</h1>
<div id="deviceready">
<p class="event listening" id="accelerometer">Waiting for accelerometer...</p>
</div>
</div>
<div id="complete">
<h1 id="finalStatus">Game Over</h1>
<div id="myRanking">
<p class="event listening">You came in 100th place.</p>
</div>
</div>
...当页面加载时,我会隐藏所有这些 div,例如:
$("#waiting").hide();
$("#running").hide();
$("#error").hide();
$("#complete").hide();
随着应用中发生各种事件,我会显示相应的 div,例如:
$("#waiting").show();
看起来很简单,除了 div 没有重新出现。一旦一个 div 被隐藏,它就会永远隐藏起来。没有抛出 JavaScript 错误,即使我使用 document.getElementById("waiting").style.display = 'block'; 以老式方式显示/隐藏它们,也会发生同样的事情。我有console.log() 声明确认show() 肯定被调用。
所以我不知道这是如何/为什么会发生的。过去有没有人遇到过类似的问题?解决方案是什么?
【问题讨论】:
-
您是否也尝试在浏览器中运行您的应用程序?你遇到过同样的问题吗?你也可以尝试在演出结束后打印div中的html,
alert($("waiting").html()); -
我在手机上的 webview 遇到了问题,如果您设置了触发硬件加速的“transform3d”之类的属性,则页面的视觉呈现与 DOM 状态不匹配.我不知道这是否是这里发生的事情,但是我如何确定是否是问题所在是通过实际记录相关DOM元素的样式对象,查看该对象是否实际可见,然后强制重排/以某种方式重新绘制。
-
我已经尝试使用上面的示例,并且似乎工作正常。除非您等待(显示 div)的事件在 div 实际隐藏之前到达。你能多一些你的代码或完整的文件吗?
标签: javascript jquery html css cordova