2010-03-02 52 views
3

打破我有幾個功能是這樣的:簡單的jQuery回調在IE

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

現在,buttonHide,在這種情況下,是我在其他地方聲明的函數。一旦200毫秒fadeIn完成,我想調用該函數。

太好了。適用於FF和Safari。但在IE中,它會返回一個未定義的錯誤。事實上,我在Ariel Flesler的scrollTo中使用onAfter函數遇到了同樣的問題...什麼給了?

爲了能夠運行這些回調,IE必須做些什麼?

編輯:這裏是包含該功能的代碼。這個頁面在上面的片段之後被稱爲...我是一個小菜鳥;那是問題嗎?無論如何,一切都無法加載後,沒有什麼可以運行的。

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

顯示其餘的代碼。這幾乎毫無疑問是一個範圍,關閉或簡單的JavaScript錯誤的問題。 – 2010-03-02 20:16:32

+0

請發表一個完整的例子。例如。使用this和buttonHide發佈一個完整的腳本。 – svinto 2010-03-02 20:16:43

+0

只是爲了確定...是* buttonHide'定義之前*此代碼已定義? – Aaron 2010-03-02 20:16:51

回答

4

一兩件事我注意到:一個電話後回來逗號打破IE:

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

稱他們並殺死逗號幫助之前聲明的功能。

希望這對其他人有用!