Vous ne pouvez pas facilement (et ne devriez pas) "copier" l'événement. Ce que vous pouvez faire est d'utiliser la même fonction pour gérer chaque:
var clickHandler = function() { alert('click'); };
// or just function clickHandler() { alert('click'); };
$('#firstEl').click(clickHandler);
// and later
$('#secondEl').click(clickHandler);
Sinon, vous pouvez effectivement déclencher l'événement pour le premier élément dans le second gestionnaire:
$('#firstEl').click(function() {
alert('click');
});
$('secondEl').click(function() {
$('#firstEl').click();
});
Edit: @nickf est inquiet la pollution de l'espace de noms global, mais cela peut être évité presque toujours par le code d'emballage dans un objet:
function SomeObject() {
this.clickHandler = function() { alert('click'); };
}
SomeObject.prototype.initFirstEvent = function() {
$('#firstEl').click(this.clickHandler);
};
SomeObject.prototype.initSecondEvent = function() {
$('#secondEl').click(this.clickHandler);
};
ou envelopper votre code dans une fonction anonyme et de l'appeler immédiatement:
(function() {
var clickHandler = function() { alert('click'); };
$('#firstEl').click(clickHandler);
$('#secondEl').click(clickHandler);
})();
Malheureusement aucune des réponses montrent sans utiliser jQuery. –
@ShaneReustle il s'agit d'une question sur les événements jQuery ... – nickf
Qui en arrière-plan fonctionne comme les événements normaux. J'espérais voir comment faire ceci sans utiliser jQuery sur les événements JS standard. –