我在主题上为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') ){
答案 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
});