在每个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'); });