Turbolinks,访问点击的对象

Turbolinks, access clicked object

对于某些 links,我需要在 Turbolinks 负载之间保持滚动位置。这很简单,可以按照

$(document).on('turbolinks:click', function(event) {
    windowsScrollsPosition = $(window).scrollTop();
});

$(document).on('turbolinks:load', function() {
        $(window).scrollTop(windowsScrollsPosition);
});

但是,我的页面也有其他 links 保持滚动位置会很奇怪(links 到不相关的内容)。我的计划是将数据标记添加到 link:

<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,但我不确定 link 是否指向 link 对象或如何使用它。

所以,为了缩短一个很长的问题:有没有办法访问实际单击以启动 turbolinks:click 的 link 对象?

谢谢! 查理

运气不好,我决定通过添加一个基于数据标签的事件监听器来解决这个问题,并使用该监听器来记录滚动位置:

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

然后在 turbolinks:load 上,所需要做的就是检查存储的滚动值是否 > 0,如果是,则设置滚动值。

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