Jquery question: Uncaught TypeError: Cannot read property 'createDocumentFragment' undefined
Je suis actuellement en train de construire un site web avec le Météore cadre. En ce moment, j'essaie de le faire de sorte que lorsque je clique sur un élément dans le DOM (rendus dans le cadre de guidon), de nouveaux éléments sont ajoutés à celui qui est actuellement cliqué. Je fais cela avec jquery, et nous avons inclus tous les paquets. Malheureusement, quand je l'ai tester ce que j'ai, j'ai cette erreur: Uncaught TypeError: Cannot read property 'createDocumentFragment' of undefined
. J'ai regardé en ligne et je n'arrive pas à comprendre pourquoi cela se passe.
Ici, c'est tout le code avec des commentaires pour expliquer pourquoi je fais ce que je suis:
Catégorie modèle (ce qui est l'élément que j'essaie de joindre en annexe):
<template name="category">
<div class="category">
<h2 class="text-center category-title"> {{title}} </h2>
<div class="topics"> </div> <!-- where I want to append -->
</div>
</template>
Code de gestion des événements:
Template.category.events({
'click .category': function(e){
var elem = $(this > '.topics'); //grab div to append to
var category = this;
console.log(elem); //will log what appears to be a jquery object (output below)
for (var i = 0; i < category.topics.length; i++){ //loop to append all new elements
var html = '<div>' + category.topics[i] + '</div>';
elem.append(html); //this is where the error occurs
}
}
})
Journal de sortie:
[true, jquery: "1.11.0", constructor: function, selector: "", toArray: function, get: function…]
Quelqu'un a des idées de ce que je fais mal?
Vous devez vous connecter pour publier un commentaire.
1) Cette ligne:
Qu'entendez-vous par là? Tout d'abord,
this
ici est un modèle de contexte de données, pas un élément du DOM, et certainement pas un sélecteur de chaîne. En plus de cela, vous utilisez>
comparaison, qui renvoiefalse
, de sorte que vous êtes effectivement à gauche avec$(false)
– probablement pas ce que vous voulez.Pour obtenir le modèle DOM éléments, vous devriez utiliser un modèle de méthodes à la place de celles du monde entier. Dans votre cas, c'est plus probablement:
Edit: et bien sûr, vous devez définir votre fonction en tant que
function(e, t)
pour obtenir le modèle, ici.2) Vous ne devriez vraiment pas manipuler le DOM de cette façon. Vous manquez de réactivité, d'un modèle d'optimisation, et tout le Météore est le fait déjà pour vous. Un "Météore façon" serait d'avoir le code HTML que vous devez déjà dans le modèle, et de choisir si il est montré ou caché par un réactif variable.