функция дросселя и делегирование событий

Моя проблема, я хочу отменить вызовы функций, но связанные с областью действия функции.

В моем примере я ищу клики, делегированные событиями, и отклоняю клики.

Это работает, но устранение дребезга не зависит от элемента!

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} ) );

Но как изменить функцию дроссельной заслонки, чтобы она работала так?

Или есть лучшее решение этой проблемы?


person Hans Gustavson    schedule 10.12.2012    source источник
comment
Можете представить библиотеку? Я предлагаю underscorejs. Он имеет дебаунсер и другие полезные обертки делегирования функций.   -  person Eli Gassert    schedule 11.12.2012
comment
О, это было бы сложно. Зачем нужно делегирование событий? Я действительно рекомендую использовать разные функции, но настроить их в цикле или около того.   -  person Bergi    schedule 11.12.2012
comment
Хорошо, у меня есть решение! При изменении области действия функции запускаются немедленно. q1-code.info.shwups-cms .ch/de/libraries/q1/?   -  person Hans Gustavson    schedule 11.12.2012


Ответы (1)


Я думаю, вы можете добавить следующее в нужное место

 e.stopPropagation()

Это останавливает все распространение события в фазе всплытия. Для полного кросс-браузерного опыта выполните

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

Пожалуйста, прочитайте полный пост об обработке событий на сайте quirksmode.org.

person mtk    schedule 11.12.2012