1

私の考えは、2 つの変数を持つことです。現在、メニューの上にカーソルを置いているかどうかをマークする insideLink と、Div コンテナーの上にカーソルを置いているかどうかをチェックする insideBox です。

そして、離れる場合は、他の要素からも外れているかどうかを確認し、両方から外れている場合は、両方を閉じる closeboth 関数を呼び出します。

このようにしてみましたが、うまくいきません。メニュー リンクから離れると、Box がすぐに閉じます。

setTimeout が役立つと思いますが、それを試してもうまくいきませんでした。何か案は?

$(linkID).hover(function() {
    insideLink=1;
    console.log("Its over Link");
},function() {
    insideLink=0;
    if (insideBox==0) {
      console.log("Its outside both elements, closebox"); 
      closebox();
    }
});

$(open).hover(function() {
    insideBox=1;
    console.log("Its inside box");
},function() {
    insideBox=0;
    if (insideLink==0) {
      console.log("Its outside both elements, closebox");
      closebox();
    }
});
4

2 に答える 2

1

mouseoutリンクのはボックスの前にトリガーさmouseoverれるため、1つの方法は次を使用することsetTimeout()です。

insideLink=0;
setTimeout(function() {
    if (insideBox==0) {
        console.log("Its outside both elements, closebox"); 
        closebox();
    }
}, 100);

mouseoverボックスを閉じるアクションを100ミリ秒間中断します。これは、1に設定されたイベントが発生するのに十分なはずinsideBoxです。同じことがボックスのにも適用でき.hover()ます。

于 2012-11-26T01:54:58.700 に答える
0

次のような意味だと思います。

    <div  id="outerDiv" onmouseover="checkMouse()">
        Outer DIV <br />
        <div id="innerDiv">Inner DIV 
            <br /> Inner DIV <br />
        </div>
        Outer DIV <br />
    </div>

    <script type="text/javascript">
        function checkMouse(){

            if(window.event.target.id == 'outerDiv'){
                console.log( 'indise outer div');
            }
            else{
                console.log( 'indise inner div');
            }
        }
    </script>
于 2012-11-26T01:44:20.307 に答える