节流功能和事件委托

时间:2012-12-10 19:55:00

标签: javascript event-delegation throttling

我的问题,我想去抖动函数调用,但是与调用函数的范围有关。

在我的示例中,我会查找事件委派的点击次数并对点击进行去抖动。

这样可行,但是去抖动不是特定于元素的!

http://jsbin.com/itapuf/2/edit

有优雅的方式吗?


修改 更具体(我的英语不是最好的)

我想替换此代码:

$('#blue').on('click',function(id){
    addBeep('trigger');
}.throttle(300) );

$('#green').on('click',function(id){
    addBeep('trigger');
}.throttle(300) );

通过这个(委托的事件):

$('#btns').on('click','button', function(id){
    addBeep('trigger');
}.throttle(300) );

但如果我这样做,可能会丢失对特定元素的最新点击。

我需要类似的东西:

$('#btns').on('click','button', function(id){
    addBeep('trigger');
}.throttle(300, {bindToScopt:true} ) );

但如何更改油门功能才能正常工作?

或者对于这个问题有更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

我想,你可能想在适当的地方添加以下内容

 e.stopPropagation()

这会阻止事件在冒泡阶段的所有传播。要获得完整的跨浏览器体验,请

function doSomething(e) {
    if (!e) var e = window.event;
    e.cancelBubble = true;
    if (e.stopPropagation) e.stopPropagation();
}

请阅读有关Event Handling at quirksmode.org

的完整帖子