6

hover() での高さの変化をアニメーション化するために 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 に答える