2011-02-15 84 views
3

我一直在使用googling,并且发现很多类似的问题都围绕着www,但没有发现任何能够将我的问题指向地面的问题。使用jquery获取URL的一部分

我有一个jQuery的功能得到一个锚标记,这是应该返回该值href属性 - #SomeIDHere

在我的开发环境,它完美的作品,但它的生产返回当前URI + #ID。我只需要#ID部分就可以使脚本的其余部分按预期工作。

这就是我如何得到href,现在我只需要拆分href值并获得#ID部分。

function myFunction(sender) { 
    var id = sender.getAttribute('href'); 
    alert(id); 
    // functionallity here... 
} 

我已经试过这solution这是一个辉煌的开始,但是当我试图实现它,我只得到了不定值或JavaScript错误。

一些我试过的东西:

function myFunction(sender) { 
var id = sender.getAttribute('href'); 
var newID = $(id).search.split('#')[1]; // got an error 
alert(id); 
// functionallity here... 
} 

function myFunction(sender) { 
var id = sender.getAttribute('href'); 
var newId = $(id).split('#')[1]; // got an error 
// functionallity here... 
} 

function myFunction(sender) { 
var id = sender.getAttribute('href'); 
var newId = $(sender)[0].search.split('#')[1]; // returned undefined 
// functionallity here... 
} 

任何思想或如何做到这一点的想法?我现在有点迷路了。

回答

9

使用jQuery

然后看到这一点,如果这是你需要

<a href="a.php#1">1</a> 
<a href="a.php#2">2</a> 

jQuery的部分

$("a").live("click",function(){ 
    alert($(this).attr("hash")); 
}); 

Working Example On JsFiddle

+0

多德你救了我的发财之日!非常感谢!这个问题一直困扰我很长一段时间! – diceler 2011-02-15 09:35:08

+0

很高兴知道它帮助! – Harish 2011-02-15 09:36:02

+1

您应该注意到这是HTML5中的一个新属性:https://developer.mozilla.org/en/DOM/HTMLAnchorElement。它可能不适用于每个浏览器。 – 2011-02-15 09:40:56

3

您已接受,但没有jQuery的你可以这样做:

var url = 'http://news.ycombinator.com/item?id=2217753#blah'; 

var index = url.lastIndexOf('#'); 

var hashId = url.substring(index + 1, url.length); 

//alert(hashId); 

变量hashId现在包含'blah';

1

您正在混合使用jQuery和JavaScript字符串函数。这应该工作(如果你可以100%确定该网址包含#something):

function myFunction(sender) { 
    var id = '#' + sender.getAttribute('href').split('#')[1]; 
    // or `'#' + sender.href.split('#')[1]` 
    // or `'#' + $(sender).attr('href').split('#')[1]` 

}