我正在使用jQuery UI庫版本1.8.23的自動完成小部件。我的代碼如下所示:延遲jQuery UI自動完成焦點事件
$(this).autocomplete({
autoFocus: true,
minLength: 2,
delay: 100,
source: function(request, response) {AutoCpl.getSource(request, response)},
select: function(e, ui) {AutoCpl.getSelect(e, ui, $(this))},
open: function(e, ui) {AutoCpl.setOpen($(this))}
});
經過100 ms的延遲我正在使用AJAX調用產品列表進行檢索。一切正常,但我有焦點事件的問題。我希望在選擇列表中懸停時顯示產品詳細信息。由於需要計算大量的數據,因此無法立即將產品詳細信息與產品列表一起返回。我需要使用另一個AJAX調用以便稍後在焦點事件中獲取這些信息。因爲有人可以通過鼠標移動將鼠標懸停在所有產品上,所以我無法進行AJAX調用並顯示每個響應。我必須確定有人真的希望看到特定產品的細節,所以我想等一段時間來做這個AJAX調用。
我試圖使用Ben Alman的jQuery debouce插件,但它不會按照我想要的方式工作(或者也許我只是使用它錯誤)。如果我試着這樣說:
focus: $.debounce(1000, App.getProductsDetails)
活動是由1秒延遲(這是確定),但在getProductsDetailt我沒有訪問事件和UI對象。 我嘗試另一種方式:
focus: function(e, ui){$.debounce(1000, App.getProductsDetails)}
這次getProductsDetails甚至沒有叫,這並沒有讓我吃驚了,因爲據我所知,去抖動功能必須綁定一個事件,即。 $( '#ID')。單擊($。防抖動())。
我的問題是我怎麼能延遲焦點事件,並在同一時間訪問對象返回焦點事件?