2011-08-09 153 views
2

我想只选择不包含锚点的链接,如#。我怎么做?如何只选择没有`#`的链接?

+0

请提供某种示例(最好是几个)。他们在那里投票开心! –

+0

请更具体地说明您尝试选择哪种情况。你是否在链接之后的锚点不是'#'或''“''或者你想排除一般的标签吗? – zzzzBov

+1

所有主题标签... – BiberFiver

回答

0

使用此代码:

如果你想过滤的href = “#”:

$('a[href!="#"]') 

否则:

$('a').filter(function(){ 
    return !/#/.test(this.href);//you can filter what you do not want with the regex 
}) 
+0

“contains”!=“仅存在” – chelmertz

+0

-1不幸的是,这不起作用 - 只有当整个'href'为'“#”'时,才会有效。 –

+0

我没有仔细阅读这个问题。查看我的更新。 – Darm

3

这将选择href属性不会开始所有锚与#

$('a:not([href^="#"]'); 

它可能是一个慢选择器。你只使用过一次还是多次?您可以加快它有点像:

$('a').not('[href^="#"]'); 

如果你也不想选择它含有#随时随地锚,而不是刚开始的时候,你可以将^更改为*。但是,这也不会选择重新加载浏览器的链接(转到其他页面,然后到该页面上的指定锚点)。我不认为这是你想要的,但我现在不积极。

+0

想错过什么? –

+0

“contains”!=“以” – chelmertz

+0

开头@PaulPRO:不,我看到一个“以......开头......” – chelmertz

2

试试这个:

$(':not(a[href*="#"])); 


这将是更快(将只选择锚以及):

$('a:not([href*="#"])'); 
+0

这是正确的,或$('a:not([href * =“#”])') – ghayes

+0

With a [http://jsfiddle.net/K8zgH/5/](Fiddle) – ghayes

+0

就像它选择所有这也不是一个锚。 – Paulpro

2

我这么惊讶所有的快速答案,因为他们中的大多数人并没有真正做到所要求的。

$('a:not([href*="#"])'); 

应选择不包含“锚”或我承担OP意味着链接:在页面的锚/ ID标签。