在每个turbolinks页面中使用jQuery的委托事件on():load

我在rails应用程序中有这个代码:

$(document).ready( function() { myCustomFunction("#link-selector"); } function myCustomFunction(linkCssSelector){ // some stuff... $(document).on('click', linkCssSelector, function(){ // ...some other stuff... }); } 

click事件处理已经委托给文档 ,但现在我必须将Turbolinks添加到我的应用程序中。

然后,我将采用ready()函数并执行以下操作(基于我的搜索):

 $(document).on("ready page:load", function() { myCustomFunction("#link-selector"); } 

但是一些引用告诉我不要在页面加载中添加绑定,因为它会在每次turbolinks加载某些东西时创建另一个绑定。 那是非常合理的。 但是,就我而言,我已经将click事件委托给myCustomFuntion document

问题是:每次页面加载时都可以on()函数on()运行此事件委托吗?

Obs :问题也可以改写:在很多页面加载之后,这段代码长期会造成麻烦吗?

Obs 2:我无法从myCustomFunction获取click事件处理,因为它取决于之前完成的计算。

将事件处理程序添加到文档page:load上的文档page:load将在您阅读时创建重复的处理程序。 尝试运行下面的剪辑:

(单击“ 触发”页面:点击我之前加载几次

 $(document).on('page:load', function(){ $(document).on('click', '#test', function(){ $("#log").append('
  • clicked!
  • '); }); }); $("#page_load").on('click', function(){ $(document).trigger('page:load'); });