Colorbox停止背景滚动并返回到父页面上的相同位置

Sha*_*laG 13 jquery scroll colorbox drupal-7

我有一个无序列表,我使用视图在drupal 7中创建.每个列表项都有一个打开颜色框的链接.如果将鼠标放在颜色框的褪色背景(即父页面)上,则可以滚动父页面.我所追求的是父页面,当它关闭时,停止滚动并返回父页面上的相同位置/锚点.

在这里搜索问题我找到了代码:

$(document).bind('cbox_open', function () {
    $('html').css({ overflow: 'hidden' });
}).bind('cbox_closed', function () {
    $('html').css({ overflow: 'auto' });
}); 
Run Code Online (Sandbox Code Playgroud)

上面的代码可以工作,但将父页面滚动回到最顶层.

如果我可以动态地这样做,这将有效;

$("html,body").scrollTop(400); // 300 is just a example
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Jac*_*ack 16

kannix得到了它.我只是隐藏在身上的溢出,html的溢出可能很好.

$(document).bind('cbox_open', function() {
    $('body').css({ overflow: 'hidden' });
}).bind('cbox_closed', function() {
    $('body').css({ overflow: '' });
});?
Run Code Online (Sandbox Code Playgroud)

但是,它不应该滚动回到顶部.设置scrolltop只是在解决另一个问题(例如不取消单击的锚元素上的默认操作).

  • 这完全解决了我的问题.我认为scrollTop解决方案是一个黑客攻击. (3认同)
  • 杰克完全错过了这个评论.我把两者结合起来了.使用var位置; 并删除html类,只是保持身体它现在工作. (2认同)

kan*_*nix 12

我想你可以这样做:

var position;
$(document).bind('cbox_open', function() {
    position = $("html,body").scrollTop();
    $('html').css({
        overflow: 'hidden'
    });
}).bind('cbox_closed', function() {
    $('html').css({
        overflow: 'auto'
    });
    $("html,body").scrollTop(position);
});?
Run Code Online (Sandbox Code Playgroud)