2017-05-29 40 views
1

我有一個頁面,這樣的代碼_.debounce功能奇特的水煤漿幾個輸入

$('input').on('keyup', _.debounce(function(){ 
    console.log('Keyup fired') 
}, 10000)) 

所以在$(「輸入」)我有4個輸入集合上的4個輸入。 當我開始在所有4個輸入中快速輸入時,在控制檯中只有一個'Keyup fired'後10秒鐘。

看來,每個輸入共享相同的功能。 但我認爲每個輸入都應該有它自己的_debounce函數實例。

爲什麼我錯了?根據我的觀點,爲什麼我寫COLLECTION.on(event,fn)。 Jquery應該映射4個輸入,併爲每個輸入分配調用_.debounce()的結果。所以每個輸入都會有自己的去抖功能實例。 謝謝

回答

3

看來,每個輸入共享相同的功能。

當然,因爲您爲所有輸入提供了單個事件處理函數。

如果你想不同的處理器,那麼你需要爲每個單獨的輸入綁定事件:

$('input').each(function() { 
    $(this).on('keyup', _.debounce(function() { 
    console.log('Keyup fired') 
    }, 10000)) 
}) 
+0

謝謝..只是它似乎奇怪,我分配給集合的每一個元素同樣的功能.. 。我認爲 - 新的_debounce應該每次分配 –

+0

新的'_.debounce'當然是唯一的,但在你的情況下,你只調用一次'_.debounce',所以它使用相同的函數。 – dfsq

+0

Dfsq,我試過它應該像.map(()=>)的情況下工作,該函數爲數組的每個元素調用。但是這裏顯然是以不同的方式實現的 - 在這裏它只被調用一次...... –