jquery包含列表
问题描述:
我正在使用jquery来选择包含特定href链接的列表的单个成员。jquery包含列表
这里是我到目前为止的代码:
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
var page = jQuery(location).attr('href');
if(page $= "home"){
$("'li':contains('index')").addClass("active")};
if(page $= "features"){
$("'li':contains('features')").addClass("active")};
if(page $= "people"){
$("'li':contains('people')").addClass("active") };
if(page $= "accounts"){
$("'li':contains('accounts')").addClass("active")};
if(page $= "blog"){
$("'li':contains('blog')").addClass("active")};
if(page $= "faq"){
$("'li':contains('faq')").addClass("active")};
});
</script>
的HTML代码如下所示:
<ul id="navigation">
<li><a href="/index" title="Home">Home</a></li>
<li><a href="/features" title="Features">Features</a></li>
<li><a href="/people" title="People">People</a></li>
<li><a href="/accounts" title="account">accounts</a></li>
<li><a href="/blog" title="Blog">Blog</a></li>
<li><a href="/faq" title="FAQ">FAQ</a></li>
</ul>
我似乎无法得到这个工作?我是否正确使用包含功能?
答
:contains
搜索元素的innerText
。你想要:has
,它会扫描innerHTML
。
另外,对于href属性,您需要使用attribute selector:[href="index"]
。
$("li:has(a[href*='index'])")
这将选择一个包含<a>
标签包含"index"
一个href的<li>
。
UPDATE:
if(page $= "home")
你不能真正做到这一点。如果您想查看一个字符串是否以另一个字符结尾,请使用正则表达式(或子字符串)。
jQuery(location).attr('href');
为什么要使用jQuery呢?只要做location.href
。更好的是,使用location.pathname
。然后,你可以失去的if
块,并简单地做到这一点:
var page = location.pathname;
$("li:has(a[href*='"+page+"'])").addClass("active");
(您可能需要做page.replace('home', 'index')
)
我这样做。我能调试和页面变量存储正确路径,但是我没有回应....在查询中,你不必调用任何函数吗? – 2012-07-12 16:54:04
@ChristopherH:'console.log(location.pathname)'说的是什么? “不必调用任何功能”是什么意思? – 2012-07-12 16:55:43
我知道了... location.pathname有一个结束正斜杠,我的href没有。谢谢。 – 2012-07-12 17:24:20