Me pregunto si es posible limpiar un poco estos eventos de clic:
$(document) .on('click', '.newGameItem', getNewGameItem) .on('click', '.startGame', startThisGame) .on('click', '.showThisGameInfo', showThisGameInfo) .on('click', '.closeThisGameInfo', closeThisGameInfo) .on('click', '#api_game_test', testApiGame) .on('click', '.nextGame', shiftGames) .on('click', '.confirm_cancel', cancelLexTimer) .on('click', '.completed_submission', reload) .on('turbolinks:load', function() { ... });Los primeros 8 métodos en la cadena son eventos de clic: ¿hay alguna forma en javascript de combinarlos bajo un "paraguas" de un clic, aunque los eventos de clic se deleguen en diferentes elementos?
Puede usar un solo .click y verificar el objetivo del clic con el argumento del event :
$(document).on('click', function (event) { var target = event.target; if ($(target).hasClass('newGameItem')) getNewGameItem(); if ($(target).hasClass('startGame')) startThisGame(); if (target.id == 'api_game_test') testApiGame(); // etc }) Aquí está el documento (bastante pobre) sobre event.target de jQuery: api.jquery.com/event.target
No vas a escaparte de un gran bloque de algo , ya sea .on o la respuesta de GG . Siempre puede colocarlo en un archivo .js separado para separarlo y que no abarrote su código.
// in addHandlers.js function addHandlers(document) { document.on('click',... }Esto limpiará su código mientras elimina todo el desorden no esencial mientras hace las cosas divertidas.