0

水平スクロールに基づいて再配置される (動的に追加された) 要素を取得しました。つまり、画面外に移動できます。その要素に付随して、画面外に出てはならず、画面上にとどまらなければならない別の要素があります。だから私の考えは、スクロールするたびに要素の位置を要求するイベントハンドラーを使用することでした。position-left 属性が特定の数値を下回ると、添付された要素の位置が変更されます。

この種の要素はご存知のとおり、特定のポイントまでスクロールし、その後位置が固定されているように見えるメニュー/ナビゲーションのようなものです。

これを試してみたのですが、要素がjavascriptで追加されているためか、うまくいきません。私も試しlive("scroll"..ましたが、それもうまくいきませんでした。

$(window).scroll(function(ev) { 
alert($("#scrElem").position().left);
  alert("work");    
  if ($("#scrElem").position().left >= 203) {
      $("#scrElem .attElem").css("left", ($("#scrElem").position().left - 203) + "px");
    };
});

編集:

これが役立つかもしれません:私は tinyscrollbar プラグインを使用しています。基本的に、このプラグインはスクロール時にイベントを発生させます。それが私が望んでいることです、私は彼がどこでそれをしたかさえ見ました:

oWrapper[0].addEventListener( 'DOMMouseScroll', wheel, false );
oWrapper[0].addEventListener( 'mousewheel', wheel, false );
oWrapper[0].addEventListener( 'MozMousePixelScroll', function( event ){
  event.preventDefault();
}, false);
4

3 に答える 3

-1

別の問題を探しているときに、幸運にも私の場合にそれを機能させる方法を見つけました。

var mousewheelevt = (/Firefox/i.test(navigator.userAgent)) ? "DOMMouseScroll" : "mousewheel" 
$("#scrElem").live(mousewheelevt, function(e){
 // do my position stuff
});

それは簡単です、それはうまくいきます!

于 2013-03-27T12:15:17.943 に答える
-1

これは、コンテナーに追加するオブジェクトとは独立して機能しますが、.main_container を破棄しないでください。

$(document).on('scroll', '.main_container', function() {



});
于 2013-03-26T17:51:03.723 に答える