2009-08-28 7 views
2

Je souhaite utiliser jQuery pour créer un nouveau div sur la page lorsque l'événement click d'un certain lien est activé. Je sais que cette partie ira bien. La partie qui me préoccupe est la suivante: si l'intérieur de la div nouvellement créée est un autre lien, puis-je utiliser jQuery pour capturer l'événement click de ce nouveau lien? C'est à dire. le javascript sera-t-il capable de capturer les événements de clic du nouvel élément html qui a été «dynamiquement» inséré en utilisant jQuery? Si non, comment puis-je imiter cette fonctionnalité?en utilisant jquery pour créer div avec un bouton, puis capturer l'événement de clic du nouveau bouton?

Merci

Répondre

2

Oui, il y a une fonctionnalité dans la nouvelle jQuery appelée 'live'. Vous devrez peut-être également accéder à "livequery", en fonction de ce que vous devez faire.

en direct: http://docs.jquery.com/Events/live#typefn

livequery: http://docs.jquery.com/Plugins/livequery

Bonne chance!

+0

Oui! Je vous remercie! Je suis tellement content qu'ils aient cette fonctionnalité ... –

+0

De rien! Pour info j'utilise livequery pour ce dont j'avais besoin (par opposition à live), je pense que c'est un plugin bien utilisé. – David

2

David a raison, c'est très cool et je l'utilise souvent. Certains événements ne peuvent pas être utilisés en direct. Par souci d'exhaustivité, vous pouvez également câbler de nouveaux événements lorsque vous modifiez le DOM. Par exemple:

$("#some_link").click(function() { 
    $("great_selector").html("<a id='radtimes' href='/radtimes'>rad times</a>"); 
    $("#radtimes").click(function() { 
    alert('more rad things happened!'); 
    }); 
}); 
+0

Je pense qu'avec "livequery" la plupart de ces choses devraient être traitées (à des fins pratiques), mais c'est cool. – David

0

Je vois que vous avez une réponse, mais voici quelques exemples de code qui crée un nouveau lien et lie une fonction à son événement clic en une seule fois. Modifiez si nécessaire pour les éléments imbriqués. L'utilisation des appels de fonctions chaînées ici permet d'éviter les problèmes potentiels d'échappement de quote si le code HTML d'une chaîne est utilisé. Oh, et le return false est bon d'avoir à la fin d'un gestionnaire de clic car il empêche l'activation du lien.

$('body').append($('<a>').attr('href', '#').text('Foo').click(function() { 
    alert('Foo!'); 
    return false; 
})); 
+0

Je pense qu'il voulait ajouter récursif, donc cela pourrait ne pas suffire. – David

Questions connexes