2012-11-19 65 views
0

我有一個非常簡單的PhoneGap項目,其中一些消息傳遞元素根據需要打開和關閉。我在這個項目中使用jQuery,儘管我看到的問題無論是否使用jQuery來顯示/隱藏div都會發生。Phonegap - 可以隱藏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(); 

似乎非常簡單,除了divs不再出現。一旦div被隱藏,它就會保持隱藏狀態。沒有JavaScript錯誤被拋出,即使我使用document.getElementById("waiting").style.display = 'block';以舊式方式顯示/隱藏它們也會發生同樣的事情。我有console.log()聲明確認show()肯定是被調用的。

所以我不知道這是怎麼發生的。有沒有人在過去遇到類似的問題?解決方案是什麼?

+0

您是否曾嘗試在瀏覽器中運行您的應用程序?你遇到過同樣的問題嗎?你也可以嘗試在顯示後的div中打印html,alert($(「waiting」)。html());' – Dilberted

+0

我在手機上的webview有問題,如果你已經設置了像'transform3d'這樣的屬性觸發硬件加速,頁面的可視化渲染與DOM狀態不匹配。我不知道這是怎麼回事,但我怎麼知道是否是問題所在,通過實際記錄DOM元素的樣式對象來查看對象是否實際可見,然後強制迴流/以某種方式重新繪製。 –

+0

我試圖使用上面的例子,似乎工作正常。除非您等待的事件(顯示div)在div實際隱藏之前到達。你可以多一些你的代碼或完整的文件嗎? – Dilberted

回答

1

我發現這個問題(有點)。顯然,jQuery與其他正在頁面上使用的其他腳本衝突。我不確定哪一個,或衝突是什麼,或衝突如何嚴重到導致element.style.display = 'block';停止工作,但更改HTML中的<script>標記的順序解決了問題。