2010-09-03 5 views
1

Je prends actuellement plus de liens sur la page qui commencent par « utilisateurs »:Prenez tous les liens - à l'exception certaine classe (.pas?)

$('a[href^="https://stackoverflow.com/users/"]').live('click', function(event) { 

... Cependant, ceci est un peu gourmand. Je veux exclure tous les liens vers "stuff" qui ne sont pas avec la classe "versions". J'ai essayé:

$('a[href^="https://stackoverflow.com/users/"]').not('div.versions a').live('click', function(event) { 

... mais cela casse tout le bloc. Ma prochaine conjecture est la rupture à cause de "live" - ​​avec la façon dont les événements se répètent.

Des idées? Y a-t-il une meilleure manière de faire cela?

+0

Fractionne le bloc entier comme dans l'événement ne se déclenche jamais lorsque vous cliquez sur l'un d'entre eux? – BoltClock

+0

oui, c'est correct. – jmccartie

+0

La raison en est que jQuery repose sur le bon sélecteur de '.live()' pour fonctionner. Lorsqu'un événement click est reçu, il compare les éléments au sélecteur. Lorsque vous utilisez '.not ('div.versions a')', le sélecteur finit par ressembler 'a [href^="/users/"]. Not (div.versions a)', ce qui ne correspond à rien . – user113716

Répondre

3

essayer la fusion not dans le sélecteur principal:

$('a[href^="https://stackoverflow.com/users/"]:not(div.versions a)').live('click', function(event) { 

Vérifiez ici aussi: .not() with .live() not working, semble être le même problème.

Questions connexes