簡體   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