-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イベントが常にイベントに続く場合は、実際には jQuery オブジェクトを参照するmouseoverため、問題ありません。イベントの前にイベント$tabAccを取得すると、変数が単に空の文字列になるため、問題が発生します。mouseoutmouseover$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();
});

こうすることで、(一度しか呼び出さないため、わずかなパフォーマンスの向上)の結果をキャッシュし、変数が jQuery オブジェクトを参照する$('.tabAcc')ことを確認できるため、イベント ハンドラー関数内に関数が含まれます。$tabAccremoveClass

于 2013-02-22T10:43:18.027 に答える