Turbolinks,访问点击对象

时间:2016-10-19 16:14:08

标签: jquery turbolinks-5

对于某些链接,我需要保持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:点击?

谢谢! 查理

1 个答案:

答案 0 :(得分:0)

没有太多运气,我决定通过添加基于数据标记的事件监听器来解决问题,并使用该监听器来记录滚动位置:

$('a[data-turbo-scrollback="true"]').click(function(e) {
    windowsScrollsPosition = $(window).scrollTop();     
});

然后在turbolinks上:加载所有需要的是检查存储的滚动值是否> 0如果是这样设置滚动到那个。

感觉不像使用Turbolinks的事件触发器那么优雅,但完成任务