0

単一ページの履歴タイムラインマイクロサイトを構築していますが、ブラウザーの幅に自動的に適合します。

ウィンドウのサイズが変更されると、最後にクリックされた要素まで本文がスクロールします。articleは常に全幅と高さです。これを行わないと、ウィンドウのサイズ変更が発生すると、すべてが非常に見苦しく見えます。

私はこれをやろうとしています:

$(window).resize(function() {
  $('body').scrollLeft($('article#a1377').offset().left);
});

これは非常にうまく機能します。しかし、問題は最後にクリックされた要素でそれを行うことです。だから私はこれをやろうとしていました:

$("header a").click(function(event){
  var element = 'article' + $(this).prop("hash");
});

$(window).resize(function() {
  $('body').scrollLeft($(element).offset().left);
});

しかし、それは機能していないようであり、正しい値としての要素です(article#a1377)。

4

1 に答える 1

2

Javascriptクロージャ!!!

要素はresize、クリックハンドラーに対してローカルであるコールバックには表示されません。

'article' + $(this).prop("hash");それが本当にあなたが戻そうとしているものだと仮定して!!!

var lastClicked = null;
$("header a").click(function(event){
  lastClicked = 'article' + $(this).prop("hash");
});

$(window).resize(function() {
  $('body').scrollLeft($(lastClicked).offset().left);
});
于 2013-02-07T13:15:24.923 に答える