2013-02-22 38 views
-2

執行下面的代碼時出現$tabAcc.removeClass is not a function的JavaScript錯誤。可能是什麼問題?獲取像「不是函數」的jQuery錯誤?

var $tabAcc = '', 
    $tabtoShow = '', 
    $tabSelectAcc = '', 
    $tabtoShowSelected = '', 
    $tabSelectAcc = '', 
    $tabBilling = '', 
    $tabtoShowBilling = '', 
    $tabSelectBilling = '', 
    $tabtoShowBillingSelected = ''; 
$(".tabAcc").mouseover(function() { 
    $tabAcc = $(".tabAcc"); 
    $tabtoShow = $tabAcc.children('.tabListMenu'); 
    $tabAcc.removeClass('tabAcc').addClass('tabHoverAcc'); 
    $tabtoShow.show(); 
}).mouseout(function() { 
    $tabAcc.removeClass('tabHoverAcc').addClass('tabAcc'); 
    $tabtoShow.hide(); 
}); 
+0

檢查attr在指定的jquery版本中是否受支持,你使用 – 2013-02-22 10:31:19

+2

這太可怕了.. – 2013-02-22 10:31:22

+1

@Ravi [jsbeautifier.org/](http://jsbeautifier.org/)或[jsFiddle上的TidyUp功能。淨](http://jsfiddle.net)是一個簡單的方法來解決這個問題。 – 2013-02-22 10:35:25

回答

1

你有充足的亂碼。

  1. 確保你有jQuery庫。
  2. 包裹你的元素在jQuery對象使用jquery庫

    $($tabAcc).removeClass("classname"); 
    
+0

非常感謝...工作正常... – Rajasekhar 2013-02-22 10:45:13

+1

@Rajasekhar接受它作爲答案 – 2013-02-22 10:56:48

0

如果mouseout事件始終遵循mouseover事件,那麼你會沒事的,因爲$tabAcc實際上將引用jQuery對象。如果您在mouseover事件之前獲得mouseout事件,則會出現問題,因爲您的$tabAcc變量將只是一個空字符串。

JavaScript對象中的String類沒有removeClass函數,所以會出現錯誤。假設你沒有動態添加.tabAcc元素的頁面,你可以修改你的代碼看起來像這樣:

var $tabAcc = $('.tabAcc'), 
    $tabtoShow, 
    $tabSelectAcc, 
    $tabtoShowSelected, 
    $tabSelectAcc, 
    $tabBilling, 
    $tabtoShowBilling, 
    $tabSelectBilling, 
    $tabtoShowBillingSelected; 
$tabAcc.mouseover(function() { 
    $tabtoShow = $tabAcc.children('.tabListMenu'); 
    $tabAcc.removeClass('tabAcc').addClass('tabHoverAcc'); 
    $tabtoShow.show(); 
}).mouseout(function() { 
    $tabAcc.removeClass('tabHoverAcc').addClass('tabAcc'); 
    $tabtoShow.hide(); 
}); 

你緩存的$('.tabAcc')(輕微性能改進的結果是這樣,因爲你只調用它一次),並且您可以確定$tabAcc變量將在您的事件處理函數中引用jQuery對象,因此具有removeClass函數。

相關問題