我正在使用Jquery来选择包含某个href链接的列表的单个成员。
到目前为止,这是我的代码:
<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>
我似乎无法让这个工作?我是否正确使用了包含功能?
答案 0 :(得分:2)
:contains
搜索元素的innerText
。您想要:has
,它会扫描innerHTML
。
此外,对于href属性,您需要使用attribute selector:[href="index"]
。
$("li:has(a[href*='index'])")
这将选择包含<li>
标记的<a>
,其中href包含"index"
。
更新:
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')
)