2 Stimmen

jQuery / wordpress Problem mit .addClass basierend auf url

Ich habe einige Probleme beim Hinzufügen einer Klasse zu 2 Navigationslinks in einem Thema.

Ich muss eine Klasse hinzufügen, die auf einer Url-Zeichenfolge basiert, da ich die Seite auf eine andere umleiten möchte.

Ich verwende den folgenden Code:

<script type="text/javascript">
if (window.location.pathname.indexOf('/category/blog/')){
   if ( $('#nav ul li a span').text().contains('BLOG') ){
       //add class 'current_page_item' to:
       $('#nav ul li').addClass('current_page_item');
   }
}
if (window.location.pathname.indexOf('/category/keepers/')){
   if ( $('#nav ul li a span').text().contains('KEEPERS') ){
       //add class 'current_page_item' to:
       $('#nav ul li').addClass('current_page_item');
   }
}
</script>

Kann jemand verstehen, warum das nicht funktioniert?

Ich erhalte den folgenden Fehler:

$ is not a function
[Break on this error] if ( $('#nav ul li a span').text().contains('BLOG') ){

1voto

DannyLane Punkte 2096

$("#nav ul li a span").text() gibt einen String zurück, kein jQuery-Objekt. Sie können contains nicht mit einem String aufrufen, das ist das Problem. Informationen über die Funktion text() aquí .

Ich glaube, Sie müssen Ihre Logik neu strukturieren, $("#nav ul li a span").text() gibt den folgenden String zurück: HomeBlogBioAboutKeepers Ihre "contains"-Logik wird also auf jeder Seite Ihrer Website als "true" ausgewertet.

Ich denke, ein besserer Weg, es zu tun wäre, Schleife durch die li-Elemente, erhalten den Text innerhalb einer einzelnen li-Spanne und dann festlegen, dass einzelne li's css, wenn es wahr ist.

HTH

EDIT: Das funktioniert (ich habe es auf Ihrer Website mit Firebug ausprobiert):

jQuery('#nav ul li').each(function(){
    //The comparison is case sensitive, Dont use uppercase like in your original
    if(jQuery(this).find('span').text() == "Blog"){ 
        jQuery(this).addClass('current_page_item');
    }
});

0voto

jAndy Punkte 223172

Sollten Sie diese Zeilen in

$(document).ready(function(){
     // here
});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X