13

ビューを使用して drupal 7 で作成した順序付けられていないリストがあります。各リスト項目には、カラーボックスを開くリンクがあります。カラーボックス (親ページ) の色あせた背景にマウスを置くと、親ページをスクロールできます。私が求めているのは、スクロールを停止し、閉じたときに親ページの同じ位置/アンカーに戻る親ページです。

ここで質問を検索すると、コードが見つかりました:

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

上記のコードは機能しますが、親ページのスクロールが一番上に戻ります。

動的に実行できれば、これは機能します。

$("html,body").scrollTop(400); // 300 is just a example

何か案は?

4

4 に答える 4

17

kannixはそれを手に入れました。本体のオーバーフローを非表示にするだけです。htmlのオーバーフローはおそらく問題ありません。

$(document).bind('cbox_open', function() {
    $('body').css({ overflow: 'hidden' });
}).bind('cbox_closed', function() {
    $('body').css({ overflow: '' });
});​

ただし、上にスクロールして戻るべきではありません。スクロールトップを設定することは、別の問題(クリックされたアンカー要素に対するデフォルトのアクションをキャンセルしないなど)を解決するだけです。

于 2012-08-31T19:35:11.993 に答える
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);
});​
于 2012-08-31T14:30:27.323 に答える
0

iphone/ipadの場合、このソリューションがうまく機能します!

$(document).bind('cbox_open', function() {
    var position = $('body').scrollTop();
        $('body').attr("data-position", position);
        $('body').css({position : 'fixed', top: '-' + position + 'px'});
    }).bind('cbox_closed', function() {
        $('body').css({position : 'relative', top: '0'}); 
        var position = $('body').attr("data-position");
        $('body').scrollTop(position);
    });
于 2015-10-11T12:43:18.503 に答える