慕慕森
2022-12-09 15:23:53
我正在創(chuàng)建一個(gè)函數(shù),該函數(shù)返回跨分頁內(nèi)容的給定選擇器的所有元素的 jQuery 對象。const getPagedContent = async (base, selector) => { let elements = []; let lastPage = 1; let page = 0; while (lastPage > page) { page++; let response = await got(`${base}/page/${page}`); let html = new jsdom.JSDOM(response.body); elements.push($(html).find(selector)); lastPage = getLastPage(html); } return elements;}但是,這確實(shí)會返回一個(gè)包含所有元素的 jQuery 對象,但(顯然)是一個(gè)包含多個(gè) jQuery 對象的數(shù)組。如何添加每個(gè)頁面的結(jié)果,以便返回一個(gè)包含所有元素的 jQuery 對象?編輯: 嘗試使用.add返回長度為 0 的 jQuery 對象。我不確定如何為多個(gè) dom 采用添加。const getPagedContent = async (base, selector) => { let elements = $(); let lastPage = 1; let page = 0; while (lastPage > page) { page++; let response = await got(`${base}/page/${page}`); let html = new jsdom.JSDOM(response.body); elements.add($(html).find(selector)); lastPage = getLastPage(html); } console.dir(elements); console.log('Items length:', elements.length); return elements;}jQuery {}Items length: 0
1 回答

開滿天機(jī)
TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊
您需要使用的確實(shí)是 jQuery 的.add()
. 當(dāng)前代碼的唯一問題是該.add()
方法不會改變調(diào)用它的 jQuery 對象,而是返回一個(gè)新的 jQuery 對象,其中包含調(diào)用者和添加元素的組合內(nèi)容。
新生成的對象需要像這樣分配給調(diào)用者:
let elements = $(); elements = elements.add($('some selector'));
下面的代碼片段說明了這種方法的一個(gè)工作示例。
let elements = $();
for (let i = 0; i < 2; i++) {
elements = elements.add($(`.outer${i}`).find('.inner'));
}
console.log(elements.length);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="outer0">
<div class="inner"></div>
</div>
<div class="outer1">
<div class="inner"></div>
</div>
添加回答
舉報(bào)
0/150
提交
取消