Собствеено зачем нужен твой код. он должен решить следующую проблему случайного переопределения функции Но он ее не решает. Тк вызывает функцию из глобального scope window
Те мне например надо доработать твой сайт. Я не знаю всех твоих функций и создаю с таким же именем. И оп - имеем проблему Моя доработка сломает твой код.
Так мы эту проблему решим и немного улучшим кейс
// обрабатываем все объекты с data-action
$("[data-action]").click(function(e){
// запрещаем событие по умолчанию
e.preventDefault();
// защитим наши имена неймспейсом
var ns = 'blia'
// узнаём название функции
var event_name = $(this).attr("data-action");
// Запускаем наше событие
$(document.body).trigget([ns,event_name].join('.'), e, this)
})
Просто слушаем событие
$(document.body).on('blia.addToFavorite', function(e, element){
// do stuff...
})
Теперь мы точно уверены, что наш код выполнится А также мы можем на одно событие повесить несколько функций И например, разделить логику и декорации
// actions.js
$(document.body).on('blia.addToFavorite', function(e, element){
// Добавляем пост в избранное
})
//views.js
$(document.body).on('blia.addToFavorite', function(e, element){
// меняем класс
})
Главное. Никода не объявлять переменные(функции в тч) в глобальном контексте. Только в обусловленных ситуациях. А еще лучше использовать гторовые решения. Например react.js и наслаждаться :)
Ще раз побачив.
Круто, дякую.