2017-08-15 17 views
0

Magentoには、すべてのカテゴリと商品がリストされたページがあります。上にはカテゴリのメニューがあり、スクロールするアイテムはクラスを取得して色を変更できる必要があります。メニュー項目クラスを変更するスクロールオフセット

私は、現時点では、このスクリプトを持っている:

function onScroll(event){ 
    var scrollPos = $(document).scrollTop(); 
    $('ul.nf-category-menu li a').each(function() { 
     var currLink = $(this); 
     var refElement = $(currLink.attr("href")); 
     if (refElement.position().top <= scrollPos && refElement.position().top + refElement.height() > scrollPos) { 
      $('ul.nf-category-menu li a').removeClass("active"); 
      currLink.addClass("active"); 
     } 
     else{ 
      currLink.removeClass("active"); 
     } 
    }); 
} 

しかし、クラスはすぐにDIVするDIVから変化しているが、私はいくつかのクラスが、後に追加されるので、オフセットを与えることができますか?

更新:

それはTEタイトルは150ピクセル離れて、上からのときに、すぐに「アクティブ」クラスを変更していないが、私は上から80pxの周りにクラスを変更したいと思います。

enter image description here

よろしく、

+0

jQueryの 'setTimeout'オプションを確認しましたか? – Levano

+0

私の質問が更新されました – n00bly

+0

これを知っている人はいませんか? – n00bly

答えて

0

私はすでに、それはいくつかのことを試した後は非常に簡単だった、それを修正しました。これは、それが行われていた方法です。

function onScroll(event){ 
    var scrollPos = $(document).scrollTop(); 
    $('ul.nf-category-menu li a').each(function() { 
     var currLink = $(this); 
     var refElement = $(currLink.attr("href")); 
     if (refElement.position().top+243 <= scrollPos && refElement.position().top + refElement.height() > scrollPos) { 
      $('ul.nf-category-menu li a').removeClass("active"); 
      currLink.addClass("active"); 
     } 
     else{ 
      currLink.removeClass("active"); 
     } 
    }); 
} 

(refElement.position()トップに変更する必要があった場合:。。243は、オフセットのピクセルの量である場合(refElement.position()トップ+ 243 。

+0

私は間違っていました。クラス "アクティブ"の間を変更する... – n00bly

関連する問題