我自学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'未定义的。
答案 0 :(得分:39)
确保将选择器传递给jQuery,而不是某种形式的数据:
$( '.my-selector' )
不
$( [ 'my-data' ] )
答案 1 :(得分:16)
我有类似的问题。 我使用的是jQuery.map但是我忘了使用jQuery.map(...)。get()在最后使用普通数组。
答案 2 :(得分:3)
$elms.each()
内部出现了同样的问题。
由于:
.each(Function)
的函数暴露(至少)两个参数;第一个是索引,第二个是列表中当前元素的元素,你可能想要这样做:
$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