0

我需要在 jquery 中重新绑定 mouseout 事件,因为当鼠标转到主 div 的子项(我绑定了 mouseout 事件)时,会调用 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');
        });
    }
});

.live除非您的 jQuery 版本 < 1.4.2 或其他版本,否则不应使用。

于 2012-07-02T16:31:33.567 回答
0

在这种情况下,也许您最好使用 mouseenter / mouseleave 事件?

于 2012-07-02T16:28:55.563 回答