2013-06-27 37 views
0

這是我第一次嘗試使用JQuery選項卡。我有一個簡單的文件,加載3個其他的PHP文件,當點擊標籤。使用JQuery選項卡加載的文件中的JQuery

<div id="info"> 
    <ul id="info-nav"> 
     <li><a href="tab1.php">Tab 1</a></li> 
     <li><a href="tab2.php">Tab 2</a></li> 
     <li><a href="tab3.php">Tab 3</a></li> 
    </ul> 
</div>  

<script type="text/javascript"> 

    $(document).ready(function(){ 
     $('#info').tabs(); 
    }); 

</script> 

php文件也使用JQuery,並正確加載。當我單獨測試這些文件時,JQuery部分工作正常。但是一旦它們被加載到選項卡中,JQuery就不起作用。即使是加載文件中的$(document).ready(function()...)中的簡單警報也不會顯示。兩個文件中的JQuery之間是否存在一些衝突?謝謝你的幫助。

+0

是的,可以有。您是否在控制檯中看到任何錯誤? –

+0

不,HTML部分對所有複選框,按鈕等渲染正常。沒有錯誤。但是JQuery部件不起作用。 –

+0

你打開控制檯,看看?或者你只是假設,因爲HTML正常渲染沒有錯誤(這不是一個安全的假設...) –

回答

0

沒有衝突本身,而是一兩件事情正在發生:

  • 瀏覽器正在下降,動態加載內容>標籤執行<腳本的內容;
  • 瀏覽器正在執行<腳本>標記,但在動態加載內容時,文檔對象上未觸發ready事件。

第二個幾乎肯定是真的;第一也可能是。

要找出哪些情況下發生的,而不是把一個alert()$(document).ready()回調裏面,把它簡單地給定的HTML文件的<腳本>標籤內,然後重新選擇動態加載一個HTML文件的標籤。在上述第一種情況下(<腳本>標籤未被執行),警報將不會顯示;在第二種情況下(準備好的事件不會發射),它會。

如果代碼正在被執行,那麼您所需要做的就是將您的代碼從回調中取出並將其包裝在<腳本>標籤中;它會在瀏覽器看到它時立即執行。否則 - 爲了可維護性原因,我建議這是可取的 - 您需要重新編寫應用程序,以便它不依賴於隨機的<腳本中包含的Javascript腳本>分散在各種HTML文件中的標籤,而是使用一些統一的處理程序來處理加載標籤內容時需要做的任何事情。

+0

準備好的文檔中的代碼將會在dom已經準備就緒時立即執行,所以不能這樣做。腳本根本沒有被執行。它與瀏覽器無關,最有可能的是jQuery UI將腳本剝離出來,或者發生錯誤,從而停止腳本。 –