6

我正在使用 jQuery 为悬停()上的高度变化设置动画。

悬停时,它将应用 .hover 类,单击时,它将切换 .expanded 类。它主要工作,具有适当的动画,但只有在第一次之后。第一次悬停将完全跳过动画。

我很难过 - 这是有问题的代码:

$('#expandingbox').hover(

    /*on mouseenter, if not expanded, add hover class*/
    function() {
    if (!$(this).hasClass("expanded")) {
        $(this).stop(true, true).addClass("hover", "slow");
    }},

    /*on mouseout, if not expanded, remove hover class*/
    function() {
    if (!$(this).hasClass("expanded")) {
        $(this).stop(true, true).removeClass("hover", "slow");
    }
}).click(function() {
    $(this).toggleClass("expanded", "slow");
});

我在某处发现添加 $('#expandingbox').trigger('mouseout') 可以解决这个问题,但它对我不起作用。这是一个重现问题的示例:http: //jsfiddle.net/Qc42v/


更新: 提交了一张票,结果证明这是一个 jQuery 错误。相同的代码适用于 jQuery 1.5(和最新版本的 jQuery UI)。

4

1 回答 1

2

这可能是一个合法的 jQuery UI 错误。事先添加一些随机课程似乎可以为我解决问题。检查:http: //jsfiddle.net/Qc42v/9/

所以基本上是这样的:

/*on mouseenter, if not expanded, add hover class*/
function() {
if (!$(this).hasClass("expanded")) {
    $(this).addClass("xxx");
    $(this).stop(true, true).addClass("hover", "slow");
}},

如果这对您来说太难看了,也许只使用基本的 animate() 函数?不过,肯定有人应该提交一个错误:{

于 2011-06-11T01:41:56.307 回答