Создание объекта с функциями
Немного опоздал с игрой, но вам стоит подумать об организации своего кода следующим образом.
Если у вас есть 20 уникальных действий для ваших виджетов, вы переходите ко всему этому коду. Попробуйте повторно использовать общий код, создав функции. Создайте такую структуру:
var actions = {
'widget1' : function(event) {
// handle widget 1 interaction
},
'widget2' : function(event) {
// handle widget 2 interaction
},
'widget3' : function(event) {
// handle widget 3 interaction
},
call : function(event) {
var prefix = "widget",
widget = $(event.target).closest('[class^="'+prefix+'"]'),
classN;
if(widget.length) {
classN = widget.attr('class').replace(new RegExp('.*('+prefix+'\\d*).*$'), '$1');
if(classN in this) {
this[classN](event);
}
}
}
};
Упрощенное выполнение
Затем из обработчика кликов просто вызовите функцию следующим образом:
handleOnClick : function(event) {
actions.call(event)
}