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 的事件触发器那么优雅,但完成了工作
对于某些 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 的事件触发器那么优雅,但完成了工作