为什么jquery中的代码不起作用?

时间:2011-07-24 14:04:59

标签: javascript jquery

网址如下:http://example.com/download/

var pathname = window.location.pathname;
if(pathname=='download/'){
$("#subnav-content div:first").hide();
$("#subnav-content div:second").show();
}

为什么jquery中的上述代码不起作用?我希望当网址为http://example.com/download/时。显示secong div。

ps * :此检查会影响网站效果吗? *

3 个答案:

答案 0 :(得分:2)

你需要领先的斜杠。

'/下载/'

如果您需要查询字符串参数,可以尝试使用正则表达式来匹配网址的下载部分:以下匹配/下载/.

if (window.location.pathname.match(/^\/download\//i))

关于jquery,没有:第二,你需要使用:eq(1)

var pathname = window.location.pathname;
if(pathname=='/download/'){
$("#subnav-content div:first").hide();
$("#subnav-content div:eq(1)").show();
}

对评论的回应

我在这里发表评论,因为评论中的格式很糟糕。匹配下载的正则表达式可以总结如下:

/ - 正则表达式匹配语法的开始
^ - 表示在屏幕一开始就开始匹配 \/ - 表示匹配文字字符串'/',这是一个必须转义的特殊字符
download - 匹配文字字符串'download'
\/ - 再次表示匹配文字字符串'/'
/ - 匹配语法的结尾
i - 正则表达式选项,我的意思是忽略大小写

我不清楚你的其他注意事项是什么。

答案 1 :(得分:2)

第二个不是选择器。你想要:

$("#subnav-content div:nth-child(2)").show();

答案 2 :(得分:1)

尝试使用

$("#subnav-content div:eq(0)")
$("#subnav-content div:eq(1)")

此外,您需要将代码绑定到一个事件,该事件将在文档准备就绪时被触发(load或支持onDOMReady),否则div可能不存在在记忆中。

  

ps *:此检查会影响网站效果吗?*

每行代码都会影响网站性能。虽然不一定是可见的。