我目前正在这样做:
$("div#js-product-list .products.row").append($("<div>").load('http://andreisdev.tk/alexstan/en/2-home?page=' + page_nr + ' .products.row article.product-miniature.js-product-miniature'));
然后我正在递增page_nr
,这在这个问题中并不重要,因为它有效。
之后我试图解开刚加载到页面中的article
以使其与页面中已有的其他article
的兄弟姐妹一起,因为加载会覆盖您所做的选择,我有在我当前所有文章的最后都要div
。
我试图以这种方式打开它们:
$('article.product-miniature.js-product-miniature ~ div article.product-miniature.js-product-miniature').unwrap();
所以基本上我选择刚刚附加为当前article
s的兄弟,然后我选择刚刚加载到新div中的article
并尝试打开它们。 / p>
如果我在控制台中执行此操作,首先使用.append().load()
键入命令并运行它,然后.unwrap()
它完全正常工作,如果我在同一时间插入和运行它们虽然它不起作用,但是从我的.js文件中发生同样的事情。
我有点成功:
setTimeout(function() {
$('article.product-miniature.js-product-miniature ~ div article.product-miniature.js-product-miniature').unwrap();
}, 500);
但必须有一种直接的方法。
EDIT !!!
由于评论不会被太多人看到,所以回复:
$("div#js-product-list .products.row").append($("<div>").load(''+link+' .products.row article.product-miniature.js-product-miniature', function() {
$('article.product-miniature.js-product-miniature ~ div article.product-miniature.js-product-miniature').unwrap();
}));
答案 0 :(得分:1)
问题是因为load()
是异步的,所以你试图解开尚不存在的元素。这就是使用超时来延迟逻辑工作的原因。
更好的解决方案是使用$("div#js-product-list .products.row").append($("<div>").load('http://andreisdev.tk/alexstan/en/2-home?page=' + page_nr + ' .products.row article.product-miniature.js-product-miniature', function() {
$('article.product-miniature.js-product-miniature ~ div article.product-miniature.js-product-miniature').unwrap();
}));
的回调参数来提供在内容添加到DOM之后执行展开逻辑的函数。像这样:
echo $result1;