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