繁体   English   中英

.unwrap() 在 .append().load() 之后不起作用

[英].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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM