単純なイベント・トリガーのために、あなたはjQueryのtrigger()
メソッドに関数を渡すと、その後聞い-のためにすることができ、特定のイベント(トリガを呼び出すために、その関数の戻り値を使用することができます。
function animEndTrigger(e) {
if (!e) {
return false;
}
else {
var animName = e.originalEvent.animationName;
return animName + 'FunctionTrigger';
}
}
$('body').on('bgAnimFunctionTrigger fontSizeFunctionTrigger', function(e){
console.log(e);
});
$('div').on('webkitAnimationEnd', function(e) {
$(this).trigger(animEndTrigger(e));
});
JS Fiddle demoあなたは、もちろん、イベント自体をトリガーするか、すべてのイベントを返却するかどうかを決定するために渡されたパラメータを評価するのいずれかに呼び出される関数を使用することができます
:。
一つMET
var animations = {
'bgAnim': 'aParticularEvent'
};
function animEndTrigger(e) {
if (!e) {
return false;
}
else {
var animName = e.originalEvent.animationName;
return animations[animName] ? animations[animName] : false;
}
}
$('body').on('aParticularEvent', function(e) {
console.log(e);
});
$('div').on('webkitAnimationEnd', function(e) {
$(this).trigger(animEndTrigger(e));
});
JS Fiddle demo:トリガする特定のイベントを評価するHODオブジェクトを使用することです。
この場合、return false
は、エラーUncaught TypeError: Object false has no method 'indexOf'
(私がまだ気にしていない)を提供しないように変更する必要があります。
var animations = {
'bgAnim': 'aParticularEvent'
};
function animEndTrigger(e, el) {
if (!e || !el) {
return false;
}
else {
var animName = e.originalEvent.animationName;
if (animations[animName]) {
$(el).trigger(animations[animName]);
}
}
}
$('body').on('aParticularEvent', function(e) {
console.log(e);
});
$('div').on('webkitAnimationEnd', function(e) {
animEndTrigger(e, this);
});
JS Fiddle demo:
以下と呼ばれる関数(animEndTrigger()
)直接trigger()
も(trigger()
方法を結合するには要素を必要とする)およびカスタムイベントは、上記Uncaught TypeError
回避するの原因となります。
もちろん、あなたは依然としてif
を使って評価を行っていますので、これは既に実装されているソリューションよりも丁寧であるとは確信できません。