0

マウスがメインdivの子(私がmouseoutイベントをバインドしたもの)に移動すると、mouseoutイベントが呼び出され、それを望まないため、jqueryでmouseoutイベントを再バインドする必要があります。だから私はこれを行います:

$('.div-hidden').live('mouseout', function (event) {
    e = event.toElement || event.relatedTarget;
    if (e.parentNode.parentNode == this || e == this || e.parentNode == this) {
        return;
    }
    if ($(this).parent().css('overflow') == "visible") {
        var parent_height = parseInt($(this).parent().parent().css('height').substr(0, $(this).css('height').length), 10);
        $(this).parent().animate({
            top: (parent_height - 40) + "px"
        }, 500, function () {
            $(this).css('overflow', 'hidden');
        });
    }
});

これは、ie8 / 9およびその他のブラウザーでは正常に機能しますが、ie7では機能しません。また、bind()を使用してlive()を変更しようとしましたが、機能しません。どのようにできるのか?

4

2 に答える 2

1

代わりに mouseleave イベントが必要なようです:

$('.div-hidden').live('mouseleave', function (event) {
    if ($(this).parent().css('overflow') == "visible") {
        var parent_height = parseInt($(this).parent().parent().css('height').substr(0, $(this).css('height').length), 10);
        $(this).parent().animate({
            top: (parent_height - 40) + "px"
        }, 500, function () {
            $(this).css('overflow', 'hidden');
        });
    }
});

.livejQuery のバージョンが 1.4.2 以下でない限り、使用しないでください。

于 2012-07-02T16:31:33.567 に答える
0

この場合、mouseenter / mouseleaveイベントを使用する方が良いかもしれませんか?

于 2012-07-02T16:28:55.563 に答える