No es fácil (y probablemente no debería) "copiar" el evento. Lo que puede hacer es utilizar la misma función para manejar cada uno:
var clickHandler = function() { alert('click'); };
// or just function clickHandler() { alert('click'); };
$('#firstEl').click(clickHandler);
// and later
$('#secondEl').click(clickHandler);
alternativa en realidad se podría desencadenar el evento para el primer elemento en el segundo controlador:
$('#firstEl').click(function() {
alert('click');
});
$('secondEl').click(function() {
$('#firstEl').click();
});
Editar: @nickf está preocupado contaminar el espacio de nombres global, pero esto casi siempre puede evitarse envolviendo código en un objeto:
function SomeObject() {
this.clickHandler = function() { alert('click'); };
}
SomeObject.prototype.initFirstEvent = function() {
$('#firstEl').click(this.clickHandler);
};
SomeObject.prototype.initSecondEvent = function() {
$('#secondEl').click(this.clickHandler);
};
o envolver el código en una función anónima y llamar inmediatamente:
(function() {
var clickHandler = function() { alert('click'); };
$('#firstEl').click(clickHandler);
$('#secondEl').click(clickHandler);
})();
Lamentablemente ninguna de las respuestas muestran que sin el uso de jQuery. –
@ShaneReustle es una pregunta sobre los eventos de jQuery ... – nickf
Que en el fondo funcionan igual que los eventos normales. Esperaba ver cómo hacerlo sin usar jQuery en eventos estándar de JS. –