2013-06-13 65 views
0

我有這樣的代碼:提高我的jQuery選擇的性能 - 刪除使用jquery.find

$item = $row.find('td[data-id="' + id + '"]'); 

$行是一個jQuery參照錶行。有什麼辦法可以優化這段代碼嗎?除非必須,否則我並不想使用查找功能。我想知道我是否可以這樣做:

$item = $($row + 'td[data-id="' + id + '"]'); 

但這似乎並不奏效。有什麼方法可以改進此代碼?在我的代碼中,這被稱爲很多次,似乎在IE中造成問題。

+0

我們可以看到,這是作用在HTML? – 2013-06-13 10:59:28

+0

我會認爲使用'.find'會比以某種方式組合選擇器更好。如果您只使用一個選擇器,則它將搜索整個文檔,同時使用'.find',將搜索空間限制爲僅一行。 –

+4

爲什麼你認爲'.find()'是一個問題?你是什​​麼意思「似乎是造成問題」? – nnnnnn

回答

4

不使用找到明確

$item = $('td[data-id="' + id + '"]',$row); 

雖然.find()更快然後那我建議

enter image description here

+5

這不會導致幕後的'.find()'? – nnnnnn

+0

@nnnnnn是的,這是爲什麼查找速度更快的一部分原因 –

1

這是一個很小的一段代碼嘗試和優化。你說它被稱爲很多次。你應該看看做出一個調用來提取所有你想要的單元格,然後對結果集合進行操作。有些HTML會幫助我們看看這是否真的可行。

0

你的具體情況有你已經是第一個選擇,並希望這一結果

內進行搜索,你可以做

//passing the $row as the context for the selection 
$("'td[data-id="' + id + '"]'",row); 

$row.find('td[data-id="' + id + '"]') 

但是前者將實際調用後者經過幾個if秒,所以後者將總是勝過前者

使用.find()在性能方面通常是件好事。在複合選擇像

$("table td div") 

div的被發現,然後根據他們的父母,之後他們的父母的父母filterended。使用發現你可以強制selction評估由左到右,而不是

$("table").find("td").find("div") 

後者將執行速度更快假設你有更多的div´'s than table`的