4

このフィドルを親切に見てください:

http://jsfiddle.net/e9uwA/1/

ここで起こるはずのことは、小さなボックスが css トランジションを介してフェードアウトし、次に ontransitionend で大きなボックスの高さを調整することです。Chrome、Opera では正常に動作しますが、Firefox では動作しません。

eventjQuery の .on() メソッドの第 2 引数と関係があると思います。それが許可されていない場合、他の代替手段はありますか?

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

ああ、フィドルに書かれたコメントは無視してください:)

4

1 に答える 1

4

あなたのevent扱い方は少し間違っています。一部のブラウザーには、eventたまたまstopPropagation()メソッドを持つという組み込みオブジェクトがあります。Firefox にはありません。jQuery はこれらの違いをエレガントに処理しますが、正しく使用していません。

イベント ハンドラーの形式は次のとおりです。

.on('eventName', event, function(){...})

彼らはする必要があります

.on('eventName', function(evt){...})

evtイベントの jQuery ラッパーはどこにありますか。

function start() {
    $('.childDiv').addClass('faded').on('transitionend', function(evt){
        evt.stopPropagation();
        //I suppose this ended the event listener for the childDiv
        $('.childDiv').off('transitionend');

        $('.parentDiv')
            .addClass('no-height')
            .on('transitionend',function(evt) {
                //why is 'opacity' being read? any way to fix this?
                alert(evt.propertyName);
            });
    });    
}

(ただし、finalが表示されるようにjQuery.Event、 にはプロパティがないことに注意してください)propertyNamealertundefined

実際の例: http://jsfiddle.net/qCKcg/

于 2013-04-26T07:42:34.187 に答える