0

私はこのコードを持っています:

$(this).closest("p").after('<strong>' + arMess[iCurIndex] + '</strong>').next().animate({
            top: $(this).offset().top - 57,
            left: -$(this).width() //[First value] Here i get 148px on chrome and 150px on firefox

        }, 300,function(){
            alert($(this).offset().top - 57);
            alert(-$(this).width()); //[Second value] Here i get the true width the one i want to present the left
        });

コードの概要: 最初の行で、 STRONG要素をアニメーション化します

ご覧のとおり、-$(this).width()から2つの異なる値を取得します:

最初の値:アニメーション プロセス中に取得します。

2 番目の値:アニメーションが終了した後に取得します。

私が2つの異なる値を取得する理由について誰かが考えた場合、私は非常に感謝します.

4

2 に答える 2

1

ここでの問題は、javascript キーワードthisが、アニメーションの後に呼び出される内部関数で、幅を設定するときと同じ値を持たないことです。最初の値は、アニメーションをトリガーするオブジェクトです。アラートが呼び出される関数では、これはアニメーション化されているオブジェクトです。

これを試して:

var $strongElement = $(this).closest("p").after('<strong>' + arMess[iCurIndex] + '</strong>').next();

$strongElement.animate({
       top: $(this).offset().top - 57,
       left: -$strongElement.width() 
    }, 300, function(){
    alert(-$(this).width()); 
});

http://jsfiddle.net/vtyjf/を参照してください

于 2013-04-06T14:55:29.167 に答える