在Rails中使用Turbolinks 5时,如何处理页面元素上的事件侦听器?

时间:2016-09-13 14:48:40

标签: ruby-on-rails turbolinks

根据Turbolinks readme,我们不应该在使用turbolinks:load时直接在页面元素上设置事件侦听器:

  

如果可能,请避免使用turbolinks:load事件将事件侦听器直接添加到页面主体上的元素。相反,请考虑使用事件委派在文档或窗口上注册一次事件侦听器。

在这种情况下,有时你需要在个人元素上设置监听器。建议的方法是什么?使用不同的Turbolinks活动?还有别的吗?

1 个答案:

答案 0 :(得分:5)

如果用户触发了事件(点击,按键等),那么您只需使用

即可
$(document).on('click', '#id', function(e) {......

它工作正常,因为它绑定到文档而不是可以更改或删除的类/ id。尽可能使用它。

如果您在页面加载时需要某些内容,则必须使用下面的turbolinks:load。你需要这个,因为使用turbolinks你不会做真正的整页重新加载,但你必须告诉浏览器,你已经在不同的页面。

$(document).on('turbolinks:load', function() {
  $('.class').geocomplete();
});