以下代码在执行ajax调用后执行(当用户在浏览器中向下滚动时加载)。使用append()
时,它可以正常工作,但不能使用appendTo。 为什么?我想使用appendTo的原因是我想对加载到div中的新产品使用fadeIn()
效果。
这有效:
nextProducts.done(function(data) {
$('.products-display').append(data);
//Using setTimeout as technique because settimeout will always
//put the function at bottom of the call stack (so above data
//has been appended now)
setTimeout(function() {
product_offset = parseInt($('.outfit-item.product').length);
$('.products-display').attr('data-currentoffset', product_offset);
}, 1);
});
但不是这个(没有添加产品,没有任何反应,并且没有给出console.log中的错误)
nextProducts.done(function(data) {
$( data ).appendTo( ".products-display" );
//Using setTimeout as technique because settimeout will always
//put the function at bottom of the call stack (so above data
//has been appended now)
setTimeout(function() {
product_offset = parseInt($('.outfit-item.product').length);
$('.products-display').attr('data-currentoffset', product_offset);
}, 1);
});
数据值是json。也许这就是问题?
答案 0 :(得分:1)
$( data ).appendTo
是问题所在。
从文档:"另一方面,使用.appendTo(),内容在方法之前,作为选择器表达式或动态创建的标记,并将其插入目标容器中。 "
换句话说, data 必须是一个html元素或html标记,它将被插入到另一个元素中。
答案 1 :(得分:1)
尝试执行$(array).appendTo('.foo')
时 错误。
Uncaught TypeError: Cannot read property 'ownerDocument' of undefined
你可以通过以下方式解决这个问题:
$(array.join('')).appendTo('.foo');