2014-01-14 36 views
0

我试图获取锚标记的“href”内容,但是我不能。在这里,我张贴代码:获取href内容并替换JQuery中的()

HTML内容:

<li class="selected"><a href="#featured">Feat.</a></li> 

<div class="page"><a href="#2">2</a></div> 

JQuery的内容:

$('.page a').click(function(e){ 
      e.preventDefault(); 
      //the following replace works fine 
      var t = this.href.replace(/http:\/\/.*\/#(.*)/, '$1'); 
      var p = $(this).closest('div'); 
      //the following replace didn't work 
      var s = $('li.selected a').href.replace(/http:\/\/.*\/#(.*)/, '$1'); 
}); 

我想,当你点击<a href='#2'>2</a>var s = "featured"。但是当我使用前面的函数时,它返回一个未定义的值。我的功能有什么问题?

谢谢!

回答

2

$('li.selected a')返回一个jQuery对象,而不是DOM元素,因此它没有href属性。更改为:

var s = $('li.selected a')[0].href.replace(/http:\/\/.*\/#(.*)/, '$1'); 
+0

谢谢@Barmar!现在它可以工作。 :D – Victor

+0

注意,要修改jQuery对象的属性,可以使用['.attr()'](http://api.jquery.com/attr/#attr2)。不过,DOM对象的'href'属性更简单快捷。 – Kat

+0

还有一个区别。 '.attr('href')'从DOM获取文字href属性,但'.href'获取已解析的URL。 – Barmar