2010-10-18 4 views
0

Voici donc l'extrait de code jQuery J'utilise pour créer un div que je veux cliquer surOnclick ne se déclenche pas dans IE lorsque l'élément DOM créé via jQuery

$("#someID").after('<div style="cursor:pointer; text-decoration:underline; display:inline;" onClick="alert(\'It Worked\');">Details</div>'); 

Cela fonctionne dans FireFox sans aucun problème son juste IE qui ne déclenche pas l'événement. Le div est ajouté juste après #someID mais le onclick ne fonctionne pas.

+2

Avez-vous essayé 'onclick' (avec un 'c' minuscule)? – rhino

+0

... et si vous utilisez jQuery pour ajouter l'élément par programme, pourquoi, au nom du ciel, utiliser 'onclick' de toute façon? Voir ['click'] (http://api.jquery.com/click/). –

Répondre

3

Vous devez ajouter le gestionnaire de clic en utilisant la méthode click jQuery, comme ceci:

$('<div style="cursor:pointer; text-decoration:underline; display:inline;">Details</div>') 
    .click(function() { alert('It Worked'); }) 
    .insertAfter('#someID'); 

Cela fonctionne, et sera également beaucoup plus rapide. (Le navigateur n'aura pas besoin de lancer un analyseur Javascript)

+0

ce n'est pas infaillible. vois ma réponse. –

+0

@Moin: Oui, c'est le cas. Qu'est-ce que tu racontes? – SLaks

+0

Donc, j'avais essayé d'utiliser après et faire beaucoup la même chose ci-dessus et cela n'a pas fonctionné, mais est passé à insertAfter et à la solution ci-dessus et l'a fait fonctionner. –

0

Utilisez .live() ou .delegate() pour lier des événements à des éléments créés après le chargement de la page (dans le futur).

+0

Je suis d'accord avec cela, puisque live() va lier l'écouteur si l'élément référencé est déjà dans le DOM ou non. J'ai tout abandonné en utilisant click(). – exoboy

Questions connexes