我有以下代码尝试查找与当前网址匹配的链接:$item = $('ul#ui-ajax-tabs li a').attr('href', $(location).attr('pathname'));
但是它会更改指向当前网址的所有链接:P
任何人都可以帮我修复它。干杯
答案 0 :(得分:13)
使用此查询。您的代码会更改所选链接的所有href
属性,而不是返回一组具有匹配href
属性的链接:
$("a[href*='" + location.pathname + "']")
[href*=..]
选择器返回href
属性包含当前路径名的元素列表。
另一种方法,返回href
包含当前路径名的所有元素。使用prop()
代替attr()
,以便正确解释相对网址。
$item = $('ul#ui-ajax-tabs li a').filter(function(){
return $(this).prop('href').indexOf(location.pathname) != -1;
});
答案 1 :(得分:0)
那是因为你的CSS选择器ul#ui-ajax-tabs li a
匹配多个东西。尝试使用您的选择器更具体,例如ul#ui-ajax-tabs li:first-child a
。
答案 2 :(得分:0)
在生产中,如果格式可能会像ASP.NET一样发生变化:/如果忽略URL的结束斜杠,这可能会更好。
$('.mdl-navigation').find("a").filter(function () {
return this.href.replace(/\/+$/, '') === window.location.href.replace(/\/+$/, '');
}).addClass('current-active-page-url');