执行下面的代码时,我收到一条JavaScript错误$tabAcc.removeClass is not a function
。可能是什么问题?
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 :(得分:1)
将您的元素包装在jquery对象中以使用jquery库
$($tabAcc).removeClass("classname");
答案 1 :(得分: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
函数。