2011-08-09 4 views
2

Je veux sélectionner uniquement les liens qui ne contiennent pas d'ancres, par exemple #. Comment je fais ça?Comment sélectionner uniquement les liens sans `#`?

+0

veuillez fournir une sorte d'exemple (de préférence plusieurs). Ils descendent voter heureux là-bas! –

+0

s'il vous plaît être plus précis quant aux cas que vous essayez de sélectionner. Êtes-vous après des liens où l'ancre n'est pas '#' ou '" "' ou essayez-vous d'exclure des hashtags en général? – zzzzBov

+1

tous les hashtags ... – BiberFiver

Répondre

0

Utilisez ce code:

Si vous souhaitez filtrer href = "#":

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

Sinon:

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

"contient"! = "N'existe que de" – chelmertz

+0

-1 Malheureusement cela ne fonctionne pas - cela ne fonctionnera que si le 'href' entier est' "#" 'pas s'il en contient. –

+0

Je n'ai pas lu la question attentivement. Voir ma mise à jour – Darm

3

Cela permet de sélectionner tous les points d'ancrage dont l'attribut href ne commence pas avec #.

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

Il peut s'agir d'un sélecteur lent. L'utilisez-vous seulement une fois ou plusieurs fois? Vous pouvez accélérer un peu comme:

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

Si vous ne voulez pas sélectionner les ancres qui contiennent un # partout, plutôt que le début vous pouvez changer le ^ à un *. Mais ceci ne sélectionnera pas non plus les liens qui rechargent le navigateur (aller à une page différente et ensuite à une ancre nommée sur cette page). Je ne pense pas que ce soit ce que tu veux, mais je ne suis pas positif maintenant.

+0

manque quelque chose? –

+0

"contient"! = "Commence par" – chelmertz

+0

@PaulPRO: non, je vois un "commence par" ... – chelmertz

2

Essayez ceci:

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


Ce sera plus rapide (et sélectionneront points d'ancrage ainsi):

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

Ceci est correct, ou $ ('a: not ([href * = "#"])') – ghayes

+0

Avec un [http://jsfiddle.net/K8zgH/5/](Fiddle) – ghayes

+0

Comme il sélectionne tout ce n'est pas une ancre aussi bien. – Paulpro

2

Je suis tellement surpris par toutes les réponses rapides, car la plupart d'entre elles ne font pas ce qu'on leur demande.

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

doit sélectionner des liens qui ne contiennent pas « ancres » ou comme je suppose que OP signifiait: balises d'ancrage/id en page.

Questions connexes