1

マウスオーバーで div を表示するスクリプトを作成しました。

<script type="text/javascript">
            $(document).ready(function() {

                $("a.prikaziDiv").hover(

                function() {
                    var $sibling = $(this).siblings('div.prikazano').show(); // get the sibling div and show it
                    $('div.prikazano').not($sibling).hide(); // hide the other divs
                }, function() {
                    $(this).siblings('div.prikazano').delay(999).fadeOut(0);; // get the sibling div and hide it after .333 seconds
                });

            });

</script>

<a class="prikaziDiv" href="#">SHOW</a><div class="prikazano" style="display:none;">aa</div>

動作していますが、「SHOW」リンクにカーソルを合わせると、そのdivにカーソルが表示されますが、消えます。私は消えたくありません。

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

ありがとうございました!

4

2 に答える 2

1

アンカーにカーソルを合わせていると、div が表示されます。div にカーソルを合わせると、アンカーの上にカーソルを置いていないため、div が消え、hover() の mouseleave 部分がトリガーされます。div をアンカー内に配置するか、次のようなタイムアウトを使用できます。

$(document).ready(function () {
    var timer;
    $("a.prikaziDiv").on({
        mouseenter: function() {
            var $sibling = $(this).siblings('div.prikazano').show();
            $('div.prikazano').not($sibling).hide();
        },
        mouseleave: function() {
            var self = this;
            timer = setTimeout(function() {
                $(self).siblings('div.prikazano').fadeOut(1);
            }, 999);
        }
    });

    $('div.prikazano').on({
        mouseenter: function() {
            clearTimeout(timer);
        },
        mouseleave: function() {
            $(this).delay(999).fadeOut(1);
        }
    })
});

フィドル

于 2013-02-06T23:30:20.933 に答える
0

ホバーの代わりに mosueenter を使用してください。

http://jsfiddle.net/kkobold/y8hb9/

于 2013-02-06T19:06:08.947 に答える