未捕获的TypeError:无法读取未定义的属性“ownerDocument”

时间:2013-07-11 13:35:12

标签: javascript jquery django json

我自学AJAX来AJAX化我的网站。在我的模板中,我有以下JS代码从视图中获取一些JSON数据,然后将数据附加到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"); 
  });
}

我认为我的观点是返回正确的JSON,但现在数据没有添加到.mainContent div。

它给出了这个错误:

  

未捕获的TypeError:无法读取属性' ownerDocument'未定义的。

5 个答案:

答案 0 :(得分:39)

确保将选择器传递给jQuery,而不是某种形式的数据:

$( '.my-selector' )

$( [ 'my-data' ] )

答案 1 :(得分:16)

我有类似的问题。 我使用的是jQuery.map但是我忘了使用jQuery.map(...)。get()在最后使用普通数组。

答案 2 :(得分:3)

$elms.each()内部出现了同样的问题。

由于:

  1. 传递给.each(Function)的函数暴露(至少)两个参数;第一个是索引,第二个是列表中当前元素的元素,
  2. 因为其他类似的循环方法在索引
  3. 之前给出数组中的元素

    你可能想要这样做:

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

    如果这是您所需要的:

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

答案 3 :(得分:1)

如果要附加到DOM,请确保内容兼容:

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

答案 4 :(得分:0)

在我的情况下,发生此错误是因为我的HTML的尾随换行符。

var myHtml = '<p>\
    This should work.\
    But does not.\
</p>\
';

jQuery('.something').append(myHtml); // this causes the error

为避免该错误,您只需要修剪HTML。

jQuery('.something').append(jQuery.trim(myHtml)); // this works