當使用jQuery查找XML DOM結構中的一組元素時;如何以懶惰的方式調用jquery的.find?
將.find與CSS查詢結合使用會導致可迭代的結果,但是jquery將在當時返回所有結果,這很慢並且會暫停我的UI。
我該如何用懶惰的方式迭代結果?
我觀察到有一個.first()方法,但是在文檔中我找不到.next(),我錯過了什麼?
當使用jQuery查找XML DOM結構中的一組元素時;如何以懶惰的方式調用jquery的.find?
將.find與CSS查詢結合使用會導致可迭代的結果,但是jquery將在當時返回所有結果,這很慢並且會暫停我的UI。
我該如何用懶惰的方式迭代結果?
我觀察到有一個.first()方法,但是在文檔中我找不到.next(),我錯過了什麼?
我最好的建議是包含您的搜索。從不運行全局查詢。如果可能的話,請從您可以通過ID檢索元素搜索(限制節點的數量來遍歷)
例如,而不是下面
var infoList = $("a.query span.info")
使用
var container = $('#myCt');
var infoList = container.find('a.query span.info');
// OR more simply (but I'm not sure jQuery optimizes the query)
var infoList = container.find('#myCt a.query span.info')
這是有道理的,在沒有懶惰評估的情況下,縮小搜索大小將是一種選擇。 – Arafangion
我不認爲懶惰評估是正確的。你需要的是延遲評估(使用setTimeouts),以便UI線程在執行搜索時有機會更新 –
這將是一種替代方法,我使用'懶惰評估',因爲我想要的概念是:「如果我想要第一個項目,找到它,然後停止尋找,如果我想要下一個項目,開始尋找...「 – Arafangion
$(".class").each(function() {
//do code here
});
這比'find'更好嗎?真誠的問題。 – Madbreaks
每個迭代中作者使用find()首先獲取所有元素並導致其問題。 「...但是當時jquery會返回所有的結果,這很慢並且會暫停我的UI。」 –
該方法存在,但它們並不真正幫助懶惰的查詢。查看我對問題 –
的評論感謝那些,我正在查看沒有.next()的http://api.jquery.com/category/traversing/filtering/。 (我還是jquery的新手),但@JuanMendes對我的問題有正確的解釋。 – Arafangion
@Arafangion:提供準確的選擇器,緩存引用和執行對特定選擇器的子搜索是智能且高效的遍歷,而不是我所知的延遲加載的解釋,但可能是您唯一的**替代方案**給定語言你正在合作。 – Nope
'我無法在文檔中找到.next()你看過在線文檔嗎? http://api.jquery.com,也專門針對下一個:http://api.jquery.com/next/在線文檔非常詳細,在那裏提供的搜索框也非常好幫助你找到任何你可能需要。 – Nope
'next()'和'prev()'也不會執行延遲查詢,它要求您已經有一個jQuery節點集 –
確實,我想要一個'lazy nodeset'。 – Arafangion