作者TonyQ (自立而後立人。)
看板Ajax
標題Re: [問題] 油猴腳本越來越肥了,求優化方案
時間Wed Jul 4 00:01:33 2012
※ 引述《TonyQ (自立而後立人。)》之銘言:
: //如果這個選項內容直接就對應到字串那就可以直接做了。
: var key = $(this).text(); //範例實作,可能會需要調整
: var result = asiamap[key];
: if ( result != null){
: Asia[result] = $(this);
: }
: });
: 基本上就是打索引取代搜尋,你原本這種寫法每個 selector 都需要搜遍所有 h2,
: 如果能只搜尋一次就把需要的東西都找回來,
: 那效率會從 O(n^2) 變成 O(n) 會差蠻多的。
以你的例子來講,你的
#pvp_header > h2 只有一個,
卻要用 contains 查 n 次,這樣實在是很不經濟。
var oceania = {
'Tasmania':21
};
//原本是
//Oceania [21] = $("
#pvp_header > h2:contains('Tasmania')")
var Oceania = [];
$("
#pvp_header > h2").each(function(){
//這邊需要做一點字串上的判定,想辦法找出對應的字串 key,
//如果這個選項內容直接就對應到字串那就可以直接做了。
var key = $(this).text(); //範例實作,可能會需要調整
var result = asiamap[key];
if ( result != null){
Oceania[result] = $(this);
}
});
http://screencast.com/t/VKfwVauT
基本上應該很好 optimize 才對,這也只是其中一種方法而已,
實際上應該是看你拿這個h2來幹麼,還有機會再更簡單一點。
--
網頁上拉近距離的幫手 實現 GMail豐富應用的功臣
數也數不清的友善使用者體驗 這就是javascript
歡迎同好到 AJAX 板一同討論。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.241.140.152
1F:推 ff760725:我是要當h2裡有某些特定詞組的時候,就能啟動一組code 07/04 01:13
2F:→ ff760725:所以我底下會有 07/04 01:13
3F:→ ff760725:for (i = 0; i < 26 ; i++) { 07/04 01:13
4F:→ ff760725: if (Oceania[i].text()){ 裡面包著的東西 07/04 01:14