2016-05-24 4 views
0

Ich möchte die Klasse "ausgewählt" zu einem [href] hinzufügen, wenn das bestimmte DIV kommt während des Scrollens. Und entferne diese Klasse, wenn DIV komplett gescrollt hat. Dieser Code fügt die Klasse hinzu, aber nachdem er vollständig gescrollt wurde, wird die a [href] nicht fokussiert.toggeln Sie die CSS-Klasse zu ausgewählten/nicht ausgewählten auf Scroll-Jquery

var aChildren = $(".cd-faq-categories li a"); // find the a children of the list items 

var aArray = [];        // create the empty aArray 
for (var i = 0; i < aChildren.length; i++) { 
var aChild = aChildren[i]; 
var ahref = $(aChild).attr('href'); 
aArray.push(ahref); 
} 

$(window).scroll(function() { 
var windowPos = $(window).scrollTop(); // get the offset of the window from the top of page 

var windowHeight = $(window).height(); // get the height of the window 

var docHeight = $(document).height(); 

for (var i = 0; i < aArray.length; i++) { 
    var theID = aArray[i]; 
    var divPos = $(theID).offset().top; 
    // get the offset of the div from the top of page 
    var divHeight = $(theID).height(); // get the height of the div in question  

    if (windowPos >= divPos && windowPos < (divPos + divHeight)) { 
     $("a[href='" + theID + "']").addClass("selected"); 
    } else { 
     if ($("a[href='#cld9']")) 
     { 
      //... 
     } 
     else 
     { 
      $("a[href='" + theID + "']").removeClass("selected"); 
     } 
    } 
} 
if (windowPos + windowHeight == docHeight) { 
    alert("gfg"); 
    if (!$(".cd-faq-categories li a").hasClass("selected")) { 
     var navActiveCurrent = $("li").attr("href"); 
     $("a[href='" + navActiveCurrent + "']").removeClass("selected"); 
     $("li a").addClass("selected"); 
    } 
} 
}); 

Was ist der richtige Weg, es zu schreiben?

+0

Warum gehst du nicht ein Plugin verwenden tun, wie https://github.com/zeusdeux/isInViewport? –

+0

@MoshFeu Danke für den Vorschlag. Ich werde es sicher benutzen. Aber kannst du hier mit diesem Code helfen? –

+0

Was ist 'if ($ ("a [href =" # cld9 "]")) versucht zu erreichen? – softwarenewbie7331

Antwort

0
} else { 
     if ($("a[href='#cld9']")) 
     { 
      //... 
     } 
     else 
    { 
     $("a[href='" + theID + "']").removeClass("selected"); 
    } 
} 

Ich denke, Sie wahrscheinlich die letzte Zeile wollen für alle anderen IDs ausführen können, müssen Sie

} else if ($("a[href='#cld9']")) { 
      //... 
} else { 
      $("a[href='" + theID + "']").removeClass("selected"); 
} 

statt

+0

Danke für die Antwort .. :) –

+0

@Keyur Ist diese Antwort Ihre Frage? Wenn ja, bitte akzeptieren Sie es (Sie können auch upvote :)) –

+0

Eigentlich habe ich dafür das Plugin http://github.com/zeusdeux/isInViewport verwendet. Also kann ich deinen Code nicht testen. Aber danke für die Antwort. @MoshFeu –