質問

私は、ドロップダウンメニューには、次のコードを使用してjQueryのホバーイベントには:

clearTimeout(hTimeout);
$('#lowermenu').queue('fx', []);
$('#menucenter .current').removeClass('current');
$(this).children('a').addClass('current');        
dTimeout = setTimeout(function($item){slidelower($item)}, 200, $(this)); // This is the bad line

function slidelower($li)
{
    $li.addClass('dropping');
    $lowermenu = $li.children('ul').clone();
    $('#lowermenu:not(:animated)').empty().append($lowermenu).slideDown();
    $('#lowermenu > ul > li:not(:animated)').hover(function()
    {                      
        $(this).children('ul:hidden').css('top', 'auto').slideDown();
    }, function()
    {
        $(this).children('ul:visible').slideUp();
    });
}

私は次のエラーを取得する:

Webページエラーの詳細

ユーザーエージェント:Mozillaの/ 4.0(互換; MSIE 8.0; Windows NTの5.1;トライデント/ 4.0; GTB6.3; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0) タイムスタンプ:土、2009年11月14日11時12分46秒UTC

メッセージ: '未定義' がnullであるかどうか、オブジェクト

ライン:81

のChar:25

コード:0

URI:[URLはここにあった]

私はそれがsetTimeoutメソッドによって引き起こさだと思われる - 私は無名関数の引数として三番目のパラメータを渡しています。その無名関数はクロージャと関数を呼び出します。

誰が助けることはできますか?

役に立ちましたか?

解決 2

OK、私は問題を発見しました。

:IEでのsetTimeoutは、追加のパラメータをサポートしてdoesntの

https://developer.mozilla.org/en/window.setTimeoutする

ミッションは中止されます。

他のヒント

$(this).children('a').addClass('current');   
var that = this;     
dTimeout = setTimeout(function($item){slidelower($item)}, 200, that); // This is the bad line

のsetTimeoutをwindowオブジェクトによって所有され、従ってthiswindowを指します。 「は」変数でそれをキャッシュすることにより、外側のコンテキストへの参照を保存します。

念のために誰がこれを読み取ります。 OPが概説された方法でIEでのsetIntervalやsetTimeoutメソッドに引数を渡すことが可能ではありません。一つは、使用して匿名関数と範囲内にある引数に渡すことによって行うことができます。

だから、OPはと悪い行を交換する必要があります

dTimeout = setTimeout(function(){slidelower($item)}, 200);

これはIEでのsetTimeoutの予想される構文(2つの引数:機能および遅延)であるが、匿名関数は「slidelower」に$項目の値を渡します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top