web-dev-qa-db-fra.com

Uncaught TypeError: Impossible de lire la propriété 'ownerDocument' de indéfinie

J'enseigne moi-même AJAX pour AJAXify mon site. Dans mon modèle, j'ai le code JS suivant pour obtenir des données JSON d'une vue, puis les ajouter à un div.

function filter(type) {
  $.getJSON(
    '/activity_stream/global-activity-stream/', 
    {xhr: "true", filter: type}, 
    function(data) {
      $('.mainContent').children().remove();
      $(data).appendTo('.mainContent');
    });
  }

  $(".btn").click(function () { 
    filter("recent"); 
  });
}

Je pense que mon avis renvoie le code JSON correct, mais les données ne sont pas ajoutées au fichier .mainContent div.

Cela donne cette erreur:

Uncaught TypeError: Impossible de lire la propriété 'ownerDocument' de indéfinie.

34
Denny

Assurez-vous de passer un sélecteur à jQuery et non à une forme de données:

$( '.my-selector' )

ne pas:

$( [ 'my-data' ] )
41
redolent

J'ai eu un problème similaire. J'utilisais jQuery.map mais j'avais oublié d'utiliser jQuery.map (...). Get () à la fin pour travailler avec un tableau normal.

16
Overload119

Le même problème a été soulevé pour moi à l'intérieur de $elms.each().

Car:

  1. la fonction que vous passez à .each(Function) expose (au moins) deux arguments; le premier étant l'index et le second étant l'élément de l'élément actuel de la liste, et
  2. parce que d'autres méthodes de bouclage similaires donnent l'élément courant dans le tableau avant l'index

vous pourriez être tenté de faire ceci:

$elms.each((item) => $(item).addClass('wrong'));

Quand c'est ce dont vous avez besoin:

$elms.each((index, item) => $(item).addClass('wrong'));
3
Kevin Beal

Si vous ajoutez au DOM, assurez-vous que le contenu est compatible:

modal.find ('div.modal-body').append (content) // check content
1
mehmet

Si vous utilisez des fonctions ES6 anon, cela entrera en conflit avec $(this)

Cela marche:

$('.dna-list').on('click', '.card', function(e) {
  console.log($(this));
});

Cela ne marche pas:

$('.dna-list').on('click', '.card', (e) => {
  console.log($(this));
});
0
Eddie