2010-08-07 71 views
0

這是我的javascript: -jQuery的標籤ajax的問題​​

<script type ="text/javascript"> 
    $(function() 
    { 
$("#tabs").tabs({ cache: true ,fx: { opacity: 'toggle' }}); 


    }); 

</script> 

這是我的HTML中使用AJAX,它加載php文件: -

<ul> 
      <li><a href="#tab1">General</a></li> 
      <li><a href="<?php echo base_url() . 'Admin/Messages.php' ?>">Messages</a></li> 
      <li><a href="<?php echo base_url() . 'Admin/Pics.php' ?>">Pics</a></li> 
      <li><a href="<?php echo base_url() . 'Admin/Facilities.php' ?>">Facilities</a></li> 

     </ul> 

我想知道的問題是,當Messages.php是裝javascript onload事件會觸發嗎?我想知道,因爲我想採取我的textarea並將其轉換爲編輯器。但是我不能夠捕捉到window.onload事件: -

window.onload = function(){ 
     alert('hello'); 
    } 

,如果進一步我寫的東西: -

$(function(){ 
} 

它可以在Opera和IE,但有時不工作有時。總而言之,如何在上述情況下捕獲window.onload?

編輯

貌似$(function(){ }似乎是工作,問題是fx: { opacity: 'toggle' }。當我刪除效果,它工作正常。

感謝提前:)

+0

您正在使用哪個版本的jQuery/jQuery UI?在兩者之間以前的不兼容版本中,視覺效果會破壞小部件。 – 2010-08-07 14:50:15

回答

1

window.onload事件不會火,在文檔中你加載到它已經早些時候解僱。

您應該可以使用document.ready,例如, $(function() { });在你正在提取的頁面中,它工作,只要你至少jQuery 1.4.2 +。 1.4.2版本中的事件修復了幾個問題,其中包括一個不一致的問題,如果您使用1.4.1或更低版本,我不能保證它是100%一致的。

或者,你可以在主要頁面,而不是內部Messages.php的代碼並運行在選項卡中的load event代碼,就像這樣:

$("#tabs").bind("tabsload", function(event, ui) { 
    $('.myEditorClass', ui.panel).myEditorPlugin(); 
}); 
1

我在某些瀏覽器注意到,如果您使用display:none,它將不會在該標記內呈現任何內容,它只是忽略其中的內容,因爲它沒有被顯示。我不確定該fx設置是否使用.hide(),但這可能是問題的一部分。

爲什麼不在加載的頁面上設置一個名爲「init」的函數,然後讓ajax做一個回調來觸發它?