2012-07-04 108 views
0

我爲滑塊創建了一個jQuery迷你腳本。它在Firefox,Chrome,IE9中完美工作,但當我懸停在IE7,IE8中。它顯示一個警告錯誤(未定義的current_hover_item)。IE8中的jQuery未定義變量

$('.nav-item').hover(function(){ 
     var current_hover_item = $(this).children().attr('rel'); 
     $('.show-item').hide(); 
     $(current_hover_item).fadeIn(1000); 
     $(this).animate({"width": "+=10px", opacity: 0.6}, 500, function(){ 
      $(this).animate({"width": "-=10px", opacity: 1}, 500); 
     }); 
}, function(){ 
     $(current_hover_item).fadeOut(1000); 
     return false; 
}); 

我試圖刪除(VAR)關鍵字,但是當我懸停,它不會顯示一切。 請幫幫我。謝謝。

回答

2

current_hover_item在第二個函數中未定義,因爲第一個函數中的定義在closure中。

您需要在兩個函數中聲明current_hover_item。或者,因爲您只在每個功能中使用一次變量,請將其完全刪除,如下所示:

$('.nav-item').hover(function(){ 
     $('.show-item').hide(); 
     $($(this).children().attr('rel')).fadeIn(1000); 
     $(this).animate({"width": "+=10px", opacity: 0.6}, 500, function(){ 
      $(this).animate({"width": "-=10px", opacity: 1}, 500); 
     }); 
}, function(){ 
     $($(this).children().attr('rel')).fadeOut(1000); 
     return false; 
}); 

或者最好重構您的代碼。

+0

謝謝。我試過你的代碼,但在我的情況下,這是行不通的。 –

0

我今天早些時候遇到這個問題。我通過在任何jQuery函數(包括.ready())之外聲明變量來解決它,然後將其設置在您需要的地方(您當前聲明它的地方)。