2010-04-09 9 views
3

J'ai un code qui fonctionne bien dans FF mais pas dans IE. J'ai lu d'autres articles disant que la méthode Jquery live ne supporte pas les événements de changement mais j'utilise un événement click. Voici mon code, il est à l'intérieur $ (document) .ready (function():..Jquery ne fonctionne pas dans IE

$("a").live("click", function(e) { 
     alert("link clicked"); 
     //do stuff 
    }); 

Si FF l'alerte est déclenchée, mais pas dans IE Quand j'utilise $ ("a") cliquez dessus fonctionne bien, le problème est que j'ai besoin de la fonction à appliquer aux liens qui n'existent pas lorsque la page est chargée pour la première fois (ils seront créés via des appels ajax à un stade ultérieur)

Ai-je des options ici . Nous utilisons jquery-1.4.1.min.js.

Merci à l'avance

Répondre

2

si ces liens sont à un contenu spécifique, vous pouvez utiliser:

$('#link_container_id').delegate('a', 'click', function(e){ 
    alert('link clicked'); 
}); 

.delegate() regardera s'il y a des événements (cliquez dans votre cas) bouillonne, le cas échéant, il vérifie la cible et compare à "a" dans votre cas. Devrait travailler, mais non testé.

+0

bien le contexte est la page entière. Puis-je le spécifier pour tout le corps de la page? – Kaskade

+0

il devrait, $ (document.body) .delegate() par exemple. – jAndy

+1

@jAndy - C'est presque la même chose que d'utiliser '.live()', '$ (document)' serait exactement le même, pas sûr de savoir comment cela résoudrait le problème du bouillonnement qui ne se produit pas. –

1

éléments doit exister dans le DOM au moment où vous joignez l'événement live. Si plus tard, ils sont recréés (par exemple dans un rappel ajax), vous n'avez pas besoin de rattacher le gestionnaire d'événements à nouveau. Si les éléments n'existent pas au chargement de la page, vous pouvez attacher l'événement en direct quand ils sont chargés, mais si vous faites cela alors probablement vous n'avez plus besoin de l'événement live car vous pouvez attacher directement l'événement click.

+1

Je ne vous suis pas du tout. Je travaille sur un grand projet et je n'ai aucun contrôle sur tout le code. J'ai besoin d'une méthode pour être appelée sur le clic de chaque "a". Lorsque j'utilise l'événement click, certains des liens (ceux qui sont chargés après le chargement de la page car ils prennent beaucoup de temps) ne sont pas récupérés par le clic jquery. Quand j'utilise en direct cela fonctionne mais pas dans IE. Je dois utiliser jquery pour intercepter tous les liens car je n'ai pas accès au code contenant le lien lui-même. Espérons que cela a du sens – Kaskade