J'ai une vue épine dorsale qui crée une nouvelle div pour chaque modèle qui est passé en elle. Cependant, je ne peux pas obtenir toute sorte d'événements à feu (cliquez sur a.change statut) sur la vue et je suppose que c'est parce que les éléments à l'intérieur de celui-ci sont également générées à partir d'un modèle. S'il vous plaît laissez-moi savoir s'il y a une façon de contourner ce
<script id="single-video-tmpl" type="text/x-jquery-tmpl"> <div> <div class="video-info"> <span class="video-title"><%=video_title%></span> <div class="bottom-info"> <a href="#<%=id%>" class="change-status"></a> </div> </div> </div> </script>
4 Réponses :
Essayez un this.delegateEvents () code> après avoir rendu le nouveau contenu. P>
J'ai essayé d'ajouter que et il ne semble pas quoi que ce soit le changement :(
Il y a des choses qui pourraient être la cause du problème.
Tout d'abord, votre Au lieu de:. el: ' il suffit d'utiliser: el code> déclaration semble être suspect. Si vous voulez un div avec cette classe il vous suffit de définir le
className code> depuis la valeur par défaut pour les vues de squelette est
div code> p>
className: 'fournisseur-vidéo' code> p> Je ne vois pas de détails sur votre vue des méthodes d'initialisation, mais la meilleure pratique est d'initialiser une vue puis rendre au conteneur: p>
$("#your-video-container").html(yourVideoDivView.render().el)
yourVideoDivView.delegateEvents();
donc si je lance div déclencheur (clic) el.find $ ( 'a.change-statut').. juste après delegateEvents () il tire, mais sinon, si je clique sur ce ne sera pas le feu. Pensez-vous que cela pourrait avoir à faire avec que cela est enveloppé dans un ou deux autres points de vue? Il est enveloppé dans une vue videoSet qui est ensuite enveloppé dans une vue plus grande. Est-ce que cet effet cela?
Nevermind, je devais rendre le parent voir la même façon que ci-dessus, merci!
J'ai eu un problème similaire.
Vous pouvez résoudre ce problème en deux étapes.
- Création d'une vue en tagName code>
- Append votre modèle dans ce el $ code>
.
C'est tout.
Et ça marche sans this.delegateEvents () code> p>
La question que je remarquai avec tagName et en utilisant ce annexant. El est $, l'écouteur d'événement n'a pas joindre l'événement pour le dernier élément créé avec tagName sélectionné. Mais, le problème se est résolu lors de l'utilisation this.delegateEvents () après les éléments annexant DOM. P>
el code> vous définissez n'a pas de sens, il devrait être un jquery comme sélecteur ( api.jquery.com/category/selectors ).
Je l'avoir créer un div pour chaque modèle
Oh, ça marche? Je ne l'ai jamais vu utilisé comme ça pour être honnête, désolé.
C'est bon. Oui, il fonctionne très bien de cette façon en fonction de ce que vous essayez d'accomplir.
Je pense que ce pourrait être parce que l'élément est créé uniquement après avoir initialisé. Ainsi, lors de l'initialisation (où
événements code> est analysée) il ne peut pas lier les événements de clic à tout élément dans le DOM.
Oui, c'est ce que je supposais. Je suppose qu'il doit y avoir un moyen de contourner, la réponse ci-dessous semble que ce serait la solution, mais il ne fonctionne pas
où vous mettez
this.delegateEvents () code> exactement?
J'ai essayé de le mettre dans la fonction après le code html rendu a été ajouté
Avez-vous un jsFiddle avec cela?
Votre
a code> en fait vide lorsque vous le rendre? Essayez:
texte ici code>.