基于url的.addClass的jQuery / wordpress问题

时间:2010-04-22 11:53:50

标签: jquery wordpress

我在主题上为2个导航链接添加课程时遇到了一些问题。

我需要添加一个基于url字符串的类,因为我正在将页面重定向到另一个。

我正在使用以下代码:

<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>

谁能明白为什么不起作用?

我收到以下错误:

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

2 个答案:

答案 0 :(得分:1)

$(“#nav ul li a span”)。text()返回一个字符串,而不是一个jQuery对象。 你不能在字符串上调用contains,这就是问题所在。 有关text()函数的信息here

我认为你需要重新构建你的逻辑方式, $(“#nav ul li a span”)。text()返回以下字符串: HomeBlogBioAboutKeepers 因此,您的包含逻辑将在您网站的每个页面上评估为真。

我认为更好的方法是循环使用li元素,在单个li span中获取文本,然后在个别li的css为真时设置它。

HTH

编辑: 这是有效的(我在你的网站上用firebug试了一下):

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');
    }
});

答案 1 :(得分:0)

你应该将这些行放入

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