記事要素にCSS3遷移効果を実装していますが、イベントリスナーtransitionendは純粋なJavaScriptでのみ機能し、jQueryでは機能しません。
以下の例を参照してください。
// this works
this.parentNode.addEventListener( 'transitionend', function() {alert("1"); }, true);
// this does not work
$(this).parent().addEventListener( 'transitionend', function() {alert("1"); }, true);
誰かが私が間違っていることを私に説明できますか?
jQueryでは、bind()
またはon()
メソッドを使用する必要があります。
$(this).parent().bind( 'transitionend', function() {alert("1"); });
また、要素で複数のトランジション(不透明度や幅など)を実行している場合は、複数のtransitionEndコールバックが発生することにも注意してください。
JQueryを使用してイベントをdivの遷移終了にバインドしている場合は、one()関数の使用を検討することをお勧めします。
$(this).parent().one("webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend", function() {
// your code when the transition has finished
});
これは、コードが最初にのみ起動することを意味します。したがって、同じ要素で4つの異なる遷移が発生した場合、コールバックは1回だけ発生します。
_this.parentNode
_はjavascriptオブジェクトを返します。プロパティがあります_.addEventListener
_ $(this).parent()
jQueryオブジェクトを返します。プロパティはありません_.addEventListener
_
代わりにこれを試してください、
_$(this).parent().on('webkitTransitionEnd oTransitionEnd transitionend msTransitionEnd', function() {
alert("1");
})
_
最初のものが実際に機能する場合(ベンダープレフィックスが必要なため、疑わしい)、これも機能するはずです。
$(this).parent().on('transitionend', function() {
alert("1");
});