2011-10-13 53 views
4

我有以下的代码,试图找到当前URL匹配的链接:$item = $('ul#ui-ajax-tabs li a').attr('href', $(location).attr('pathname'));而是它改变了所有链接到当前的URL:PjQuery的找到匹配的链接当前页面

谁能帮助我修理它。干杯

回答

11

使用此查询。您的代码更改选定链接的所有href属性,而不是返回一个选择的链接与匹配href属性:

$("a[href*='" + location.pathname + "']") 

[href*=..]选择返回其href属性包含当前路径元素的列表。

另一种方法,返回其所有元素的href包含当前路径名。使用prop()代替attr(),以便相对URL也能正确解释。

$item = $('ul#ui-ajax-tabs li a').filter(function(){ 
    return $(this).prop('href').indexOf(location.pathname) != -1; 
}); 
0

这是因为您的CSS选择器ul#ui-ajax-tabs li a匹配不止一件事。尝试使用选择器更具体,例如ul#ui-ajax-tabs li:first-child a

0

URL的格式可能会在生产中更改,如ASP.NET:/如果忽略URL的末尾斜杠,这可能会更好。

$('.mdl-navigation').find("a").filter(function() { 
    return this.href.replace(/\/+$/, '') === window.location.href.replace(/\/+$/, ''); 
}).addClass('current-active-page-url'); 
相关问题