对于某些链接,我需要保持Turbolinks加载之间的滚动位置。这对于
的内容很简单$(document).on('turbolinks:click', function(event) {
windowsScrollsPosition = $(window).scrollTop();
});
$(document).on('turbolinks:load', function() {
$(window).scrollTop(windowsScrollsPosition);
});
然而,我的页面还有其他链接,其中保持滚动位置将非常奇怪(链接到不相关的内容)。我的计划是在链接中添加数据标记:
<a href="#" class="btn btn-danger tiny" data-turbo-scrollback="1">Delete</a></td>
然后在设置滚动的脚本中添加基本if语句。这样的事情只是为了说明:
$(document).on('turbolinks:click', function(event) {
if ($(this).data('turbo-scrollback')) {
windowsScrollsPosition = $(window).scrollTop();
} else {
windowsScrollsPosition = 0;
}
});
现在,我遇到的问题是我找不到任何方法来访问被点击的对象。 $(this),在上面的示例中似乎只是回到Turbolinks中的触发事件。事件,似乎只包含Turbolinks触发器传递的信息的有限范围。 Even.target似乎有一个jQuery guid,但我不确定是否链接到链接对象或如何使用它。
所以,简单地说一个很长的问题:有没有办法访问实际点击的链接对象以启动turbolinks:点击?
谢谢! 查理
答案 0 :(得分:0)
没有太多运气,我决定通过添加基于数据标记的事件监听器来解决问题,并使用该监听器来记录滚动位置:
$('a[data-turbo-scrollback="true"]').click(function(e) {
windowsScrollsPosition = $(window).scrollTop();
});
然后在turbolinks上:加载所有需要的是检查存储的滚动值是否> 0如果是这样设置滚动到那个。
感觉不像使用Turbolinks的事件触发器那么优雅,但完成任务