2010-08-07 5 views
0

Cette mon javascript: -onglets jquery problème ajax

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


    }); 

</script> 

Et ceci est mon html qui charge le fichier php en utilisant ajax: -

<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> 

La question que je veux savoir est quand Messages.php est chargé l'événement javascript onload se déclenche-t-il? Je veux savoir parce que je veux prendre mon textarea et le convertir en éditeur. Cependant, je ne suis pas en mesure de capturer window.onload événement: -

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

et plus loin si j'écris quelque chose: -

$(function(){ 
} 

Il fonctionne dans Opera et IE mais parfois ne fonctionne pas parfois. Pour résumer, comment puis-je capturer window.onload dans la situation ci-dessus?

EDIT

On dirait $(function(){ } semble fonctionner, le problème est avec fx: { opacity: 'toggle' }. Lorsque je supprime l'effet, cela fonctionne très bien.

Merci à l'avance :)

+0

Quelles versions de l'interface utilisateur jQuery/jQuery utilisez-vous? Dans les précédentes versions incompatibles entre les deux, les effets visuels détruiraient les widgets. –

Répondre

1

L'événement window.onloadne le feu, dans le document que vous chargez dans ce déjà tiré plus tôt.

Vous devriez pouvoir utiliser document.ready, par ex. $(function() { }); dans la page que vous allez chercher et cela fonctionne, à condition que vous soyez au moins jQuery 1.4.2+. Plusieurs problèmes ont été résolus avec des événements dans la version 1.4.2, dont un qui est incohérent, si vous utilisez 1.4.1 ou moins, je ne peux pas promettre qu'il soit cohérent à 100%.

Vous pouvez avoir le code dans la page principale au lieu de l'intérieur messages.php et exécuter le code dans le load event des onglets, comme ceci:

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

Je l'ai remarqué dans certains navigateurs Si vous utilisez display: none, il ne restituera rien à l'intérieur de ce tag, il ignorera tout ce qui s'y trouve car il n'est pas affiché. Je ne suis pas sûr si ce paramètre fx utilise .hide(), mais cela pourrait faire partie du problème.

Aussi, pourquoi ne pas configurer une fonction sur les pages chargées appelées "init", alors ajax faire un rappel pour le déclencher?