0

関数が呼び出されるまでオーバーフローが非表示になっている要素があります。設定した、マウスがこのオーバーフローマテリアルにカーソルを合わせているかどうかを確認しようとしていますoverflow: visible;が、代わりに、マウスがオーバーフローコンテンツにカーソルを合わせているのは、まだ表示されていない場合でも表示されます。

jQueryで表示される高さを確認する方法はありますか?これが私が試していたものです:

    off = $(curSub).offset();
    xSubStart = parseInt(off.left);
    ySubStart = parseInt(off.top);
    xSubEnd = xSubStart + parseInt($(curSub).width());
    ySubEnd = ySubStart + parseInt($(curSub).height());

    if ( (x >= xStart && x <= xEnd && y >= yStart && y <= yEnd) ||
         (x >= xSubStart && x <= xSubEnd && y >= ySubStart && y <= ySubEnd) ) {
        // display menu
        $(cur).css('overflow', 'visible');
        match = true;
    }

xStart, xEnd, yStartおよびyEnd変数はそのコードの上に定義されており、正常に機能します。問題はjQuery関数width(), height(), outerWidth()でありouterHeight()、要素が表示されているかどうかをテストしないことだと思います。

これを達成する方法はありますか?top仕様を使って、物理的に非表示から表示に移行することを考えましたleftが、可能であれば、この方法の方がクリーンだと思います。

誰かが答えを知っていることを願っています。

4

1 に答える 1

0

問題は、JavaScriptがコードの次の行を実行する前にアクションを完了しなかったことです。

コールバック関数を使用できます。

var setHoverAfterOverFlowVisible = function(cur, callback) {
    $(cur).css('overflow', 'visible');
    match = true;
    //other stuff

    callback();
}

setHoverAfterOverFlowVisible(cur, /*hoverFunction*/);

コールバックの詳細:http://www.impressivewebs.com/callback-functions-javascript/

于 2013-02-13T08:16:11.470 に答える