[英].unwrap() doesn't work after .append().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'));
然后我增加page_nr
,这在这个问题中并不重要,因为它有效。
在那之后,我试图解开刚刚加载到页面中的article
,使它们与页面中已经存在的其他article
成为兄弟,因为加载覆盖了您所做的选择,我不得不在所有当前的末尾创建该div
文章。
我试图以这种方式打开它们:
$('article.product-miniature.js-product-miniature ~ div article.product-miniature.js-product-miniature').unwrap();
所以基本上我选择刚刚附加为当前article
的兄弟的 div 然后我选择刚刚加载到新 div 中的article
并尝试解开它们。
如果我在控制台中执行此操作,首先使用.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(); }));
问题是因为load()
是异步的,所以您试图解开尚不存在的元素。 这就是使用超时来延迟逻辑工作的原因。
更好的解决方案是使用load()
的回调参数来提供一个函数来在将内容添加到 DOM后执行解包逻辑。 像这样:
$("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();
}));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.