2010-03-02 8 views
3

J'ai quelques fonctions comme ceci:callbacks simple jQuery briser dans IE

$(this).find('.subnav').fadeIn(200, buttonHide); 

Maintenant, buttonHide, dans ce cas, est une fonction que je l'ai déclaré ailleurs. Une fois le fadeIn 200ms terminé, je veux appeler cette fonction.

Très bien. Fonctionne dans FF et Safari. Dans IE, cependant, il renvoie une erreur non définie. En fait, j'ai rencontré le même problème en utilisant la fonction onAfter dans Ariel Flesler scrollTo ... ce qui donne?

Que dois-je faire pour que IE puisse exécuter ces rappels?

EDIT: voici le code qui inclut la fonction. Cette page est appelée APRÈS l'extrait ci-dessus ... Je suis un peu un noob; est-ce un problème? Rien ne se passe jusqu'à APRÈS que tout soit chargé de toute façon.

jQuery(function($){ 

    /* BEGIN MENU SCROLLER INITIALIZATION */ 

     // Resets pane 
    $('.menuClip').scrollTo(0); 

    // scrolls to active item to 
    $('body:not(.archive) .menuClip').stop().scrollTo($('.current_page_item')); 

    $('.menuDown').click(function(){ 
     $('.menuClip').stop().scrollTo('+=70px', 800, { 
      onAfter:function(){ 
       buttonHide(); 
      }, 
     }); 
    }); 
    $('.menuUp').click(function(){ 
     $('.menuClip').stop().scrollTo('-=70px', 800, { 
      onAfter:function(){ 
       buttonHide(); 
      }, 
     }); 
    }); 

/* END MENU SCROLLER INITIALIZATION */ 

}); 

$(buttonHide = function() { 
    setTimeout(function(){ 
     var elemM = $(document).find('.menuClip:visible'); 
     if (elemM[0].scrollHeight - elemM.scrollTop() == elemM.outerHeight()) { 
      $('.menuDown').animate({"opacity":"0"}, 200); 
     } else { 
      $('.menuDown').animate({"opacity":"1"}, 200); 
     } 

     if (elemM.scrollTop() == 0) { 
      $('.menuUp').animate({"opacity":"0"}, 200); 
     } else { 
      $('.menuUp').animate({"opacity":"1"}, 200); 
     } 
    }, 200); 
}); 
+0

Afficher la suite de votre code. Il s'agit presque incontestablement d'un problème de portée, de fermeture ou simplement d'une erreur javascript mineure. –

+0

Veuillez poster un exemple complet. Par exemple. poster un script complet avec ceci et buttonHide. – svinto

+0

Juste pour être sûr que ... 'buttonHide' est défini * avant * que ce code ne soit défini? – Aaron

Répondre

4

Une chose que je remarque: virgule après un appel de retour IE casse:

$('#move_this_up').click(function(){ 
    $('#content').stop().scrollTo('-=270', 1000, 
     { onAfter:function(){ 
      inactiveContentStates(); 
     }, // COMMA BAD!!!! 
    }); 
}); 

fonctions Déclarant avant de les appeler et de tuer les virgules ont aidé.

Espérons que cela soit utile aux autres!