2016-03-24 16 views

答えて

1

あなたが望む量のウィンドウをスクロールした後、リンクにクラスを追加する必要があります。

だからあなたはあなたが

a.changeColor{color:green} 

を変更して(これらは、パフォーマンスのために悪いです)スクロールで機能を実行したいもののためにあなたのデフォルトの色そして

a{color:red;} 

とクラスを設定します

$window = $(window), 
$nav = $('.nav'), 
scrollTop = $window.scrollTop(); 

$window.scroll(function(){ 
    scrollTop = $window.scrollTop(); 
    if(scrollTop > 500){ 
    $nav.children('a').addClass('changeColor'); 
    }else{ 
    $nav.children('a').removeClass(); 
    } 
}) 

https://jsfiddle.net/hahrywa6/2/

これを編集してdivをターゲティングすることもできます。この方法で値をハードコードする必要はありません。これはあなたにとってより良いかもしれません。

これを行うには、navがヒットしたときにテキストの色を変更するdivをターゲットとする変数を作成します。

var yourDiv = $('.yourDivName').offset().top; 

先頭からオフセットを見つけます。 if文で同じscrollTop変数を使用するだけです。ウィンドウスクロールが要素以上の場合は、クラスを追加します。

var $window = $(window), 
$nav = $('.nav'), 
scrollTop = $window.scrollTop(), 
triggerDiv = $('#trigger-div').offset().top; 
$window.scroll(function(){ 
    scrollTop = $window.scrollTop(); 
    if(scrollTop > 500){ 
    $nav.children('a').removeClass().addClass('changeColor'); 
    }else{ 
    $nav.children('a').removeClass(); 
    } 
    if(scrollTop > triggerDiv){ 
    $nav.children('a').removeClass().addClass('changeColor2'); 
    } 
}) 

https://jsfiddle.net/hahrywa6/2/

+0

だから私は、どちらかの方法のいずれか(私が希望するものである)のdivまたはハードコードされた値で、私のために働くことを得るように見えることはできません。以前はjsfiddleを使っていませんが、すべてを正しくアップロードしたと思います。 https://jsfiddle.net/Remirlis/Lt7o6Lyd/ – Remirlis

+1

カップルもの:あなたのjavascriptパネルは純粋なJSに設定されていました。これはjqueryを使用しています!私は "子供"を "見つける"ように変更しました。子供たちはあなたの要素を直ちに子供、すなわち1つ下のレベルでチェックします。 Findはnav内のすべてのコンテンツをチェックします。ここで更新された謎です:https://jsfiddle.net/Lt7o6Lyd/1/ – Dale

+0

ありがとう!それは私のためにそれをしました。 – Remirlis

関連する問題