2017-04-08 1 views
1

J'ai un élément avec des propriétés telles que le glisser-déposer et le gestionnaire d'événement 1 clic. J'ai cloné cet élément et je trouve que l'élément cloné a le gestionnaire d'événements en fonctionnement, tant que l'élément original est toujours dans le DOM. Cependant, au moment où j'enlève l'original du DOM, le gestionnaire d'événements est détruit. Mon code va:Utiliser les gestionnaires d'événements dans un élément cloné après avoir supprimé l'original

el = $(@id).clone(true) 
$('#container').packery('addItems', el) 
el.appendTo('#container') 
$('#container').packery('layout') 
$('#lowerContainer > ' + @id).remove() 

Le gestionnaire d'événements sur el fonctionne aussi longtemps que la dernière ligne n'est pas ajouté. Cependant, l'ajout de $('#lowerContainer > ' + @id).remove() tue le gestionnaire. Est-ce que quelqu'un sait comment je peux garder le gestionnaire dans l'élément cloné même après avoir enlevé l'original? Merci d'avance!

Répondre

0

Vous devez définir votre gestionnaire de clic sur le contenant plutôt que sur des éléments individuels:

$('#container').on('click', '.item', function() {...}); 

Dans ce cas, il se chargera de clics que sur les éléments existants que sur ceux qui seront ajoutés plus tard.

+0

la syntaxe est incorrecte pour la délégation d'événements, le sélecteur de cible doit être l'argument de 'on()' – charlietfl

+0

@charlietfl en effet, corrigé. –