-2

$tabAcc.removeClass is not a function在执行下面的代码时收到一个 JavaScript 错误。可能是什么问题?

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();
});
4

2 回答 2

1

你有很多乱码。

  1. 确保你有 jquery 库。
  2. 将元素包装在 jquery 对象中以使用 jquery 库

    $($tabAcc).removeClass("classname");
    
于 2013-02-22T10:32:37.617 回答
0

如果一个mouseout事件总是跟随一个mouseover事件,那么你会没事的,因为它$tabAcc实际上会引用一个 jQuery 对象。如果你在一个mouseout事件之前得到一个事件,问题就会出现mouseover,因为那时你的$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在您的事件处理函数中具有该函数。

于 2013-02-22T10:43:18.027 回答