2017-05-29 21 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(()=>)的情况下工作,该函数为数组的每个元素调用。但是这里显然是以不同的方式实现的 - 在这里它只被调用一次...... –