Ну, так как javascript является событийным движением язык программирования, я бы порекомендовал первый.
Вот случай, который иллюстрирует преимущества использования EVENT-обработчиков вместо простой функции вызовов:
function someEventHandler(){
if($(this).hasClass('some-class'))
// do something
}
$('element').bind('eventName.eventNamespace',someEventHandler);
Теперь, если вы просто вызываете эту функцию, например:
someEventHandler();
вы можете увидеть, что оно не будет иметь эффекта, поскольку он предназначен для выполнения в контексте dom.
Если вы вызываете событие, которое имеет функцию someEventHandler
, как это событие-обработчик:
$('element').trigger('eventName.eventNamespace');
функция вызывается в контексте элемента, что-то вроде:
someEventHandler.call($('element').get(0));
, который будет иметь желаемый эффект ,
Кроме того, вы можете связать несколько обработчиков событий с одним и тем же событием и привязать его к нескольким элементам.
Если вы хотите, чтобы вызвать функцию для каждого из списка РОМА элементов, вы должны сделать что-то вроде этого:
someEventHandler.call($('element1').get(0));
someEventHandler.call($('element2').get(0));
someEventHandler.call($('element3').get(0));
// ... and so on
времени, с первым методом будет гораздо проще:
$('element1,element2,element3').bind('eventName.eventNamespace',someEventHandler);
$('element1,element2,element3').trigger('eventName.eventNamespace');
Обратите внимание, что подход, который вы принимаете, зависит от контекста, в котором вы используете эти функции. Если ваша функция не имеет никакого отношения к элементу dom, или вы не хотите, чтобы дополнительные объекты добавляли к вашему мероприятию, напишите, вы, вероятно, должны просто хранить его и использовать классические декларации функций и вызовы.
Знание контекста поможет, прямо сейчас пример два на самом деле недействителен. –