Für einen einfachen Ereignis-Trigger, können Sie eine Funktion jQuery trigger()
Methode übergeben und den Rückgabewert dieser Funktion verwenden, um einen Trigger ein bestimmtes Ereignis zu nennen (die dann hören-für werden können:
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
Sie können, natürlich, verwenden auch die aufgerufene Funktion entweder auslösen das Ereignis selbst oder die übergebenen Parameter beurteilen, ob oder nicht, um zu bestimmen überhaupt ein Ereignis zurück:
One erfüllt auszulösen ist, ein Objekt zu verwenden hod für ein bestimmtes Ereignis zu bewerten:
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.
Obwohl in diesem Fall die return false
sollte geändert werden, um nicht den Fehler Uncaught TypeError: Object false has no method 'indexOf'
(die ich noch nicht belästigt, um zu berücksichtigen) zu bieten.
folgende Ursachen die gerufene Funktions (animEndTrigger()
) direkt trigger()
das benutzerdefinierte Ereignis (die ein Element, auf dem die erfordert trigger()
Verfahren zu binden), und vermeidet auch die Uncaught TypeError
oben:
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.
Natürlich sind Sie immer noch, effektiv, mit einer if
, um eine Bewertung durchzuführen, so dass ich nicht besonders sicher sein kann, dass dies ist ordentlicher als Ihre eigene bereits implementierte Lösung.