1

我使用jQuery的搜索選擇插件http://effinroot.eiremedia.netdna-cdn.com/repo/plugins/forms-controls/searchabledropdown/index.html我如何使用jQuery檢索選擇插件時的性能

這工作得很好,如果我有一小部分(初始化大量選擇的時候很慢)選擇一個頁面上,但我有一個很大的數字(可以在一個頁面上幾百)。當我初始化插件(通過類或循環通過ID)需要很長時間(約10秒)並消耗所有系統資源。

這是當我運行安裝程序代碼,我得到的問題,例如:

$(document).ready(function() { 
    $("select").searchable(); 
}); 

我的選擇實際上是相同的兩個重複多次。我嘗試使用一個select(它更快)初始化並複製,然後複製(通過HTML和jQuery clone()),但複製的實例不可搜索。

無論如何要減少初始化大數字插件或重複選擇所需的時間嗎?

+0

我會推薦在性能敏感的情況下編寫自己的javascript代替jquery方法。儘管事實上它會消耗更多的時間,但您可以控制一切,並且可以編寫一個針對您的特定情況進行了優化的代碼。 – Egor4eg 2013-04-22 13:09:25

+0

我的問題是 - 爲什麼你在一個頁面上有很多選擇?我會說你可能有一個UI問題。有什麼方法可以改變你的網站的工作方式嗎? – 2013-04-22 13:39:21

+0

該網站是一個活動的表格,而下拉菜單是活動的所有者(以允許重新分配) - 因此決定有大量的選擇是故意的(因爲我們允許用戶如果他們希望在一個頁面上擁有所有項目他們過濾到他們想要的)。 – fastedy 2013-04-22 16:35:15

回答

1

你是否在調用克隆時將withDataAndEvents傳遞爲true?我認爲.clone(true)應該可以工作。確保你克隆後的選擇可以搜索。

$(document).ready(function() { 
    var clone_src = $('#originalSelectUser'); 
    $(clone_src).searchable({  }); 
    $(".dest").each(function(i) { 
     $(clone_src).clone(true).attr('id', 'clone'+i).appendTo('#enddiv'); 
    }); 
}); 

另一個想法可能是讓你需要的兩個,只有隱藏。然後,在選擇重點時,將其與對應隱藏選擇的克隆進行交換。如果克隆無效,則可能需要在克隆後用.searchable()調用對其進行初始化,但不應該這樣做。

+0

我沒有嘗試withDataAndEvents(我會試試看看它是怎麼回事)。謝謝 – fastedy 2013-04-22 16:37:48

+0

嗨,謝謝。使用withDataAndEvents確實可以克隆整個事物,但它仍然引用原始位置,因此跳回到原始位置 - 例如,請參閱此處:http://jsfiddle.net/XdjRx/任何想法如何更新引用? – fastedy 2013-04-22 21:24:17

+0

當您使用ID克隆某些東西時,您需要更改克隆的ID,否則您將收到錯誤/衝突。看到這裏:http://jsfiddle.net/nathanlounds/6bMWr/1/爲我的固定示例。 – nlounds 2013-04-24 11:48:27