根据Turbolinks readme,我们不应该在使用turbolinks:load
时直接在页面元素上设置事件侦听器:
如果可能,请避免使用turbolinks:load事件将事件侦听器直接添加到页面主体上的元素。相反,请考虑使用事件委派在文档或窗口上注册一次事件侦听器。
在这种情况下,有时你需要在个人元素上设置监听器。建议的方法是什么?使用不同的Turbolinks活动?还有别的吗?
答案 0 :(得分:5)
如果用户触发了事件(点击,按键等),那么您只需使用
即可$(document).on('click', '#id', function(e) {......
它工作正常,因为它绑定到文档而不是可以更改或删除的类/ id。尽可能使用它。
如果您在页面加载时需要某些内容,则必须使用下面的turbolinks:load
。你需要这个,因为使用turbolinks你不会做真正的整页重新加载,但你必须告诉浏览器,你已经在不同的页面。
$(document).on('turbolinks:load', function() {
$('.class').geocomplete();
});